Why is my pointer not null after free?

后端 未结 6 1959
执笔经年
执笔经年 2020-12-08 17:17
void getFree(void *ptr)
{
    if(ptr != NULL)
    {
        free(ptr);
        ptr = NULL;
    }
    return;
}
int main()
{
char *a;
a=malloc(10);
getFree(a);
if(a==         


        
6条回答
  •  半阙折子戏
    2020-12-08 17:44

    Pointers are stored as integers somewhere in memory.

    When you do a = malloc(10);, a has some value, say 0x1.

    When you call getFree(a);, the function copies a into void *ptr.

    Now a=0x1 and ptr=0x1.

    When you do ptr=NULL, only ptr is changed to NULL, but a is still 0x1..

提交回复
热议问题