【发布时间】:2016-06-19 01:56:24
【问题描述】:
我正在开发一个 C 项目,结果发现在某个特定时刻,我调用了 calloc() 函数,它分配了一个已经在使用中的内存块。这怎么可能?我检查了我的内存分配使用情况,每次我调用 malloc/calloc 时,我都会调用 free(pointer_to_the_allocated_memory) 。因此,这不是内存泄漏问题,也不是两次释放的指针。 我没有粘贴我的代码,因为它是用于大学工作的,我还没有发送它。 欢迎任何类型的帮助/建议。 提前致谢。
【问题讨论】:
-
尝试使用类似 valgrind 的工具来跟踪/调试您的内存使用情况。
-
注意每个程序都有自己的虚拟内存空间。
-
你能发布一些与原版类似的东西吗?有很多人询问他们不想直接共享的专有代码,但他们通常会举例说明。你能在更小的范围内重现这种情况吗?
-
另外,当你说“已经在使用”时,你是指同一个进程,还是另一个进程?因为就像@sjsam 说的,操作系统给每个进程自己的内存空间,可能看起来是重叠的。
标签: c memory malloc free calloc