这个赋值要求我们使用malloc()(命名var1和var2)分配两个int类型变量,打印每个变量的地址(堆栈上指针的地址和堆上的地址),然后free()用来解除分配var1,再次打印地址,然后在堆中分配另一个空间var1并第三次打印地址.我相信教师试图告诉我们堆地址var1应该改变,但它始终保持不变......除非我free(var1)从代码中删除.教练做了类似的演示,但没有free()用来解除分配任何变量,所以我们从来没有看到它应该如何工作.
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
void main()
{
int *var1 = (int*)malloc(sizeof(int));
*var1 = 1000;
int *var2 = (int*)malloc(sizeof(int));
*var2 = 2000;
printf("Addresses of var1\n");
printf("Pointer on stack: %p / Heap: %p\n\n", &var1, var1);
printf("Addresses of var2\n");
printf("Pointer on stack: %p / Heap: %p\n\n", &var2, var2);
free(var1);
printf("AFTER DEALLOCATING var1 FROM THE HEAP\n");
printf("Addresses of var1\n");
printf("Pointer on stack: %p / …Run Code Online (Sandbox Code Playgroud)