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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值