gpt4 book ai didi

c++ - 为什么 free(p) 不将 p 设置为 NULL?

转载 作者:IT老高 更新时间:2023-10-28 22:15:36 24 4
gpt4 key购买 nike

这不是 free() 的标准行为的任何原因?

多个指针指向同一个对象:

#include <stdlib.h>
#include <stdio.h>

void safefree(void*& p)
{
free(p); p = NULL;
}

int main()
{
int *p = (int *)malloc(sizeof(int));
*p = 1234;
int*& p2 = p;
printf("p=%p p2=%p\n", p, p2);
safefree((void*&)p2);
printf("p=%p p2=%p\n", p, p2);
safefree((void*&)p); // safe

return 0;
}

来自 malloc 的赋值要求从 void*

转换

反之亦然:

safefree() 要求强制转换为 void*&(引用)

最佳答案

如果是这样,则必须将指针传递给指向函数的指针:

int * p = malloc( sizeof( int ));
free( & p );

我相信很多人都会弄错。

关于c++ - 为什么 free(p) 不将 p 设置为 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2651896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com