opencv IplImage创设后未释放 寻求解决疑惑
opencv IplImage创建后未释放 寻求解决疑惑。
环境:opencv2.4.2+ VS2008C++环境 + XP
使用示例如下:
在程序结束代码,没有相应的示例代码,预期泄露情况如下:
大块图像: (width * 通道数 + 3 )/4*4 * height
图像结构体泄露: IplImage 总共占用112字节,泄露 112字节 。
实际泄露情况是:
大块图像: (width * 通道数 + 3 )/4*4 * height + 20 字节 。
图像结构体泄露: 112 + 20 字节 。
请问:这俩个 20字节 是哪方面导致的内存泄露?
已经确认,任意改变 宽度和高度,通道数,都会多出20字节。
例如,一副 640*480,单通道8位图像,以及 640*480,三通道8位图像,程序退出时俩幅图像内存泄露如下:
------解决方案--------------------
opencv2.0版本以下通常结束都要手动cvReleaseImage,否则会内存泄露的
------解决方案--------------------
需要字节对齐的原因
环境:opencv2.4.2+ VS2008C++环境 + XP
使用示例如下:
IplImage * img = cvCreateImage(width,height,IPL_DEPTH_8U,1);
在程序结束代码,没有相应的示例代码,预期泄露情况如下:
大块图像: (width * 通道数 + 3 )/4*4 * height
图像结构体泄露: IplImage 总共占用112字节,泄露 112字节 。
实际泄露情况是:
大块图像: (width * 通道数 + 3 )/4*4 * height + 20 字节 。
图像结构体泄露: 112 + 20 字节 。
请问:这俩个 20字节 是哪方面导致的内存泄露?
已经确认,任意改变 宽度和高度,通道数,都会多出20字节。
例如,一副 640*480,单通道8位图像,以及 640*480,三通道8位图像,程序退出时俩幅图像内存泄露如下:
Detected memory leaks!
Dumping objects ->
{921} normal block at 0x06AFC268, 307220 bytes long.
Data: < h > CD CD CD CD 68 C2 AF 06 00 00 00 00 00 00 00 00
{920} normal block at 0x0650A888, 132 bytes long.
Data: < P p > CD CD CD CD 88 A8 50 06 70 00 00 00 00 00 00 00
{917} normal block at 0x01EF0040, 921620 bytes long.
Data: < @ > CD CD CD CD CD CD CD CD CD CD CD CD 40 00 EF 01
{916} normal block at 0x0650A708, 132 bytes long.
Data: < P p > CD CD CD CD 08 A7 50 06 70 00 00 00 00 00 00 00
Object dump complete.
opencv
内存泄露
------解决方案--------------------
opencv2.0版本以下通常结束都要手动cvReleaseImage,否则会内存泄露的
------解决方案--------------------
需要字节对齐的原因