【发布时间】:2015-10-19 06:26:01
【问题描述】:
我是 C++ 编程新手,我编写了一个旋转图像的程序。图像的输入是 ppm 格式。我的主函数或具有以下签名的旋转函数中存在内存泄漏:
<vector> rotate(picture);
我尝试使用 valgrind 进行大量调试,但无法发现问题,这是代码的简化可执行版本:http://ideone.com/vHjv
谁能帮帮我,谢谢
注意:代码可能看起来很长,泄漏在 rotate() 函数或 main() 的末尾。我不知道是什么导致了泄漏。
【问题讨论】:
-
各位读者,我只是不问这个问题,因为我懒得调试或类似的东西,我已经尝试了很多,但我无法找到问题。希望你能理解,谢谢
-
当您已经将 ppm.pixels 的值获取到 newPixel 时,不确定为什么您的旋转函数中有
myMemCpy( ppm.pixels, newPixel, ppm.size * sizeof (Pixel) );。当您在堆上通过char *temp = new char[n]分配内存时,这可能会导致内存泄漏。 -
@macroland 我有 myMemCpy 函数,因为我想将 newPixel 复制到 ppm.pixels。因为 newPixel 是一个局部变量,我将摆脱它
-
如果您打算旋转通过引用传递的
PpmArray& ppm,为什么不在rotate函数中通过循环直接访问ppm.pixels 数组并将新像素值复制到其中。我又猜想memcpy导致了内存泄漏。 -
您可以进一步将代码缩减为最小示例。将最小示例作为示例的一部分而不是在链接后面发布。
标签: c++ memory-leaks