cvReleaseImage函数的用法说明


IplImage* temp;

定义了一个指针型变量temp。

temp在内存中的存储示意:                    

3CFE3C

003F9DA0

temp变量的地址          temp的值(存放其他变量的地址)


temp=cvLoadImage("xxx\\1.jpg",0);

printf("%X\n",&temp);////////////////////////////temp自身的地址

printf("%p\n",temp);/////////////////////////////temp的值(就是存储的变量的地址)

cvReleaseImage(&temp);

printf("%X\n",&temp);////////////////////////////temp自身的地址

if(temp==NULL)

    printf("Yeah!!!\n");////////////////////////可以看到Release之后temp的值为NULL(输出为0)

temp=cvLoadImage("xxx\\2.jpg",0);

printf("%X\n",&temp);///////////////////////////temp自身的地址

printf("%p\n",temp);////////////////////////////temp的值(就是存储的变量的地址)

可以运行看一下结果。

/****************  运行结果 ******************
3CFE3C
003F9DA0
3CFE3C
Yeah!!!
3CFE3C
001AFF20
请按任意键继续. . .

*********************************************/

总结一下:cvReleaseImage函数只是将IplImage*型的变量值赋为NULL,而这个变量本身还是存在的并且在内存中的存储位置不变。

关于cvLoadImage函数和cvCreateImage函数的补充:

IplImage* pimg=cvLoadImage("xxx.jpg",0);

经过这个语句之后,系统会为载入的图像分配一段内存,地址为XXXXXX。然后指针pimg指向该内存,也即是指针变量pimg的值为XXXXXX。


cvReleaseImage(&pimg);

使用cvReleaseImage函数之后,系统将释放刚才载入图像的内存空间(也即这个图像在内存中已经不存在了),同时pimg的值置为NULL。

关于cvReleaseImage函数的用法说明
下面是类似的。

IplImage* pdst=cvCreateImage( cvsize(SIZE,SIZE),8,1 );

cvReleaseImage(&pdst);

发布了15 篇原创文章 · 获赞 19 · 访问量 9万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览