gpt4 book ai didi

c - 2 种免费通话方式 - 有区别吗?

转载 作者:行者123 更新时间:2023-11-30 19:54:33 25 4
gpt4 key购买 nike

在堆上分配内存后调用free的这两种变体之间有区别吗:

// variant 1
int* p1 = (int*) malloc(sizeof(int)*4);
free(p1);

//variant 2
int* p2 = (int*) malloc(sizeof(int)*4);
free(*p2);
*p2 = NULL;

最佳答案

是的,有区别。

变体 2 无效。 free 需要一个先前由 malloccallocrealloc 返回的指针。不过,*p2分配空间中的第一个int。正如 man free 所说,因此会发生未定义的行为(针对此特定情况调整了报价):

free() function frees the memory space pointed to by [p1], which must have been returned by a previous call to malloc(), calloc(), or realloc(). Otherwise, [...] undefined behavior occurs.

<小时/>

注释:

关于c - 2 种免费通话方式 - 有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32552695/

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