我有一个非常大的应用程序,用C编写的20,000+行在MinGW编译器上编译。应用程序在发布模式下编译时存在内存泄漏,但在调试模式下似乎不会泄漏。我创建了一个运行计数器,以确保free()调用与malloc() calloc()调用一样多。
显然,我的代码库太大了,不能在这里发布,所以我的问题是,在编译调试和发布时,发生了什么类型的差异,能够导致内存泄漏问题,我可能想要调查一下?
非常感谢!
发布于 2014-03-07 08:18:35
如果在为调试而不是为生产进行编译时使用不同的选项,则程序的内存结构可能会略有不同(特别是,不同的优化设置会对此产生影响)。这对于格式良好的代码应该不重要,但是如果您正在从无效的指针读取或写入,或者超出数组的结尾,那么您覆盖的变量可能会发生变化,从而使无害的错误有害,反之亦然。
https://stackoverflow.com/questions/22238344
复制相似问题