gpt4 book ai didi

Calloc() 正在分配先前分配的内存

转载 作者:行者123 更新时间:2023-11-30 19:12:05 29 4
gpt4 key购买 nike

我正在开发一个 C 项目,事实证明,在特定时刻,我调用了 calloc() 函数,它分配了一个已在使用中的内存块。这怎么可能?我检查了我的内存分配使用情况,每次调用 malloc/calloc 时,我都会调用 free(pointer_to_the_allocated_memory) 。因此,这不是内存泄漏问题,也不是两次释放的指针问题。我没有粘贴我的代码,因为它是为了大学工作而我还没有发送。欢迎任何类型的帮助/建议。提前致谢。

最佳答案

两个指针有可能指向同一个地方。

p1 = malloc(sizeof(int));
/* ... */
p2 = p1;
/* ... */
free(p1);
/* ... */
p3 = malloc(sizeof(int)); /* may allocate the block already used by p2 */

请注意,它通常并不那么明显。它可能通过指针算术(即 p2++)发生,或者不同的部分可以在不同的函数中完成。

另一种可能性是您在没有注意到的情况下释放了指针:

p1 = malloc(sizeof(int));
foo(p1); /* this function calls free(p1) */
p2 = malloc(sizeof(int)); /* may allocate the block already used by p1 */

关于Calloc() 正在分配先前分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37903271/

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