关于cvReleaseImage函数的用法说明

来源:互联网 发布:c罗官方数据 编辑:程序博客网 时间:2024/05/17 22:27

IplImage* temp;

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

temp在内存中的存储示意:                    

0X……

00EF90CA

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的值(就是存储的变量的地址)

可以运行看一下结果。

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

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

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

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

关于cvReleaseImage函数的用法说明
cvReleaseImage(&pimg);

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

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

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

cvReleaseImage(&pdst);

0 0
原创粉丝点击