编写一个c程序,功能是判 断当前电脑的可用内存容量有多 少MB(约数),并输出。
时间: 2024-06-22 09:02:38 浏览: 8
在C语言中,直接获取系统内存信息通常不是直接提供的标准库功能。然而,你可以使用系统调用或者第三方库(如`psutil`、`sysinfo.h`等)来间接获取这些信息。这里我们将展示一个简单的示例,但请注意这可能依赖于特定的操作系统和编译器支持。
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h> // 在Linux上可能还需要这个头文件获取内存信息
// 以下代码在某些系统上可能无法直接运行,因为获取内存信息的方式依赖于底层API
long long get_memory_info() {
// 在Linux下,你可以尝试以下代码
FILE* file = popen("free -m", "r");
if (!file) {
perror("Error opening free command");
return -1;
}
char buffer[1024];
fgets(buffer, sizeof(buffer), file);
long long mem_total = 0;
char* endptr = NULL;
mem_total = strtol(buffer, &endptr, 10);
pclose(file);
// 检查是否成功读取
if (endptr == buffer || *endptr != '\n') {
fprintf(stderr, "Failed to parse memory info\n");
return -1;
}
return mem_total;
}
int main() {
long long mem_available = get_memory_info();
if (mem_available >= 0) {
printf("Available memory: %.2f MB\n", mem_available / 1024.0);
} else {
printf("Failed to retrieve memory information.\n");
}
return 0;
}
```
这段代码在Linux环境下尝试使用`free`命令(通过`popen`和`pclose`)获取总内存信息(默认单位为MB),然后除以1024转换为MB并打印出来。