摘要: 1.强制转换(1)基本数据类型转换(值的截断)例如:doubled3=1.25e+20;doubled4=10.25;inti2=(int)d3;inti3=(int)d4;按照浮点数到整数的转换语意,结果应该是截去浮点数的小数部分而保留其整数部分,因此i3会得到10,而i2会溢出,因为d3的整数部分远远超出了一个int所能表示的范围,结果当然不正确。(2)基本数据类型的指针转换(内存截断)基本数据类型之间的指针转换一般来说必然会造成内存截断或内存访问范围的扩张,除非两种类型具有相同的字节大小。在32位系统中,int,long,float都具有4字节的空间,虽然不会造成内存截断或内存扩张,但是 阅读全文
posted @ 2012-07-31 17:18 微雪 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 1.堆内存分配 :C/C++定义了4个内存区间: 代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store)。堆的概念:通常定义变量(或对象),编译器在编译时都可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间。这种内存分配称为静态存储分配; 有些操作对象只在程序运行时才能确定,这样编译时就无法为他们预定存储空间,只能在程序运行时,系统根据运行时的要求进行内存分配,这种方法称为动态存储分配。所有动态存储分配都在堆区中进行。当程序运行到需要一个动态分配的变量或对象时,必须向系统申请取得堆中的一 阅读全文
posted @ 2012-07-31 15:52 微雪 阅读(22697) 评论(0) 推荐(1) 编辑
摘要: IplImage *im8 = cvLoadImage(argv[1]);IplImage *im32 = cvCreateImage(cvSize(im8->width, im8->height), 32, 3);cvConvertScale(im8, im32, 1/255.); 阅读全文
posted @ 2012-07-31 14:45 微雪 阅读(9685) 评论(0) 推荐(0) 编辑
摘要: 1. 写yml矩阵代码: 全选#include "cxcore.h"int main( int argc, char** argv ){ CvMat* mat = cvCreateMat( 3, 3, CV_32F ); CvFileStorage* fs = cvOpenFileStorage( "example.yml", 0, CV_STORAGE_WRITE ); cvSetIdentity( mat ); cvWrite( fs, "A", mat, cvAttrList(0,0) ); cvReleaseFileStora 阅读全文
posted @ 2012-07-31 14:44 微雪 阅读(6504) 评论(0) 推荐(0) 编辑