如何释放分配的内存,我试过免费(ptr),但它不起作用,因为我接受它。
如果我错了,有什么选择? 为什么我的代码中存在这种行为?typedef struct a
{
int a;
int b;
} aa;
aa* ptr = NULL;
int main()
{
//code
int input = 2;
ptr = malloc(sizeof(aa)*input);
for (int i = 0; i < input; i++)
{
ptr[i].a = 10;
ptr[i].b = 20;
}
for (int i = 0; i < input; i++)
{
printf("%d %d\n", ptr[i].a, ptr[i].b);
}
free(ptr);
for (int i = 0; i < input; i++)
{
printf("%d %d\n", ptr[i].a, ptr[i].b);
}
return 0;
}
输出:
10 20
10 20
After free
0 0
10 20
我接受的是什么
输出:
10 20
10 20
After free
0 0
0 0