我如何释放记忆?因为我释放后的输出并没有做我期待它做的事情

时间:2018-02-16 09:06:59

标签: c pointers memory-management free

如何释放分配的内存,我试过免费(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

0 个答案:

没有答案