我有一个非常大的应用程序,在MinGW编译器上编译的C语言编写了20,000多行。应用程序在发布模式下编译时会发生内存泄漏,但在调试模式下似乎没有泄漏。我创建了一个运行计数器,以确保我拥有与malloc()calloc()调用一样多的free()调用。
显然我的代码库太大了,不能在这里发布,所以我的问题是在调试和发布之间进行编译时会出现什么样的差异,这些差异能够导致我可能要调查的内存泄漏问题?
非常感谢!
答案 0 :(得分:1)
如果在编译调试而不是编译生产时使用不同的选项,程序的内存结构可能会略有不同(特别是,不同的优化设置会影响这一点)。这对于格式良好的代码无关紧要,但如果您正在读取或写入无效指针或超出数组末尾,那么您要覆盖的变量可能会发生变化,将无害错误变为有害,反之亦然