gpt4 book ai didi

c - C 中的动态分配和释放

转载 作者:行者123 更新时间:2023-11-30 21:13:51 25 4
gpt4 key购买 nike

void* heap = malloc(100);
char *c = heap;
strcpy(c, "Terence");
printf("heap = %s\n", heap);
free(heap);
heap = malloc(100);
printf("heap = %s\n", heap);

输出是:

heap = Terence
heap =

这就是我所期望的,但现在我有一个更复杂的代码,结构与上面类似,但输出如下:

heap = "Terence"
heap = " ren "

类似的东西。

堆好像还没有清理?

有办法解决吗?

最佳答案

malloc 分配的内存区域具有不确定的初始值。

来自 C 标准(强调我的):

(c99, 7.20.3.3p2) "The malloc function allocates space for an object whose size is specified by size and whose value is indeterminate*."

malloc之后使用callocmemset来获得确定的值。

关于c - C 中的动态分配和释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10481726/

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