我希望有人能回答我的问题并澄清细节。
IplImage* out;
out = doPyrDown( in, IPL_GAUSSIAN_5x5 );
out = doPyrDown( out, IPL_GAUSSIAN_5x5 );
out = doCanny( out, 10, 100, 3 );
// do whatever with ‘out’
//
...
cvReleaseImage ( &out );
我在学习opencv中读到这不是问题。怎么样?! 每个方法 doPyrnDown 和 doCanny 分配 Image 并返回 Image 的地址(它的指针)。 我知道这种情况会导致内存泄漏。 如果不是,我认为 IplImage 结构有一个在程序运行时动态更新的地址列表。
最佳答案
我不太了解您正在使用的这些功能的详细信息。但是,从您的描述来看,所有这些似乎都返回指向 IplImage
的指针。
out = doPyrDown( in, IPL_GAUSSIAN_5x5 );
out = doPyrDown( out, IPL_GAUSSIAN_5x5 );
out = doCanny( out, 10, 100, 3 );
请注意,第二次和第三次调用使用第一次调用返回的指针。如果这些函数仅返回修改后的指针,那么它不是内存泄漏(如果您在使用结束时删除该指针)。但是,如果它们返回新指针,那么这肯定是内存泄漏。
关于c - 这会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27839518/