1、编写一个LinuxC程序,在该程序中使用定义一个全局变量,以及使用malloc申请一段内存(可大于物理内存大小,理论上在32位系统中可以申请小于3G空间,但由于malloc要求申请连续的空间,所以能申请到的空间一般在2G以下)。 2、打印出全局变量的起始地址,以及malloc分配的内存的地址; 3、多次运行,观察运行结果,观察malloc分配的内存地址是否发生变化,全局变量地址是否发生变化,查询资料,分析原因,给出分析结果。
时间: 2024-03-03 17:51:12 浏览: 89
应用 Valgrind 发现 Linux 程序的内存问题1
以下是一个实现上述功能的Linux C程序:
```c
#include <stdio.h>
#include <stdlib.h>
int global_var;
int main()
{
int *malloc_ptr = (int*)malloc(sizeof(int)*100000000);
printf("Global variable address: %p\n", &global_var);
printf("Malloc address: %p\n", malloc_ptr);
free(malloc_ptr);
return 0;
}
```
运行多次程序,可以观察到malloc分配的内存地址每次运行都会发生变化,而全局变量的地址则一直保持不变。这是因为全局变量在程序运行时已经被分配好了一个固定的地址,而malloc分配的内存地址则取决于当前系统内存的使用情况,因此每次程序运行时都可能会得到不同的地址。
阅读全文