全部博文(38)
分类: C/C++
2008-04-05 22:46:38
numeric_limits
numeric_limits
(未验证!)
2、关于内存分配的问题,已经遇到几次了,郁闷!主要是两点:
a、跨作用域的内存分配及使用的问题。在主函数(相对)中分配的内存可以在子函数中调用,但是子函数中分配的内存却不能为主函数所调用(似乎函数传递参数时是采用复制操作导致,而指针之间的复制工作要将里面的每个值都复制,和类的复制操作一样,这里就不多说了)。解决办法:
一方面,可以让主函数分配,子函数调用;另一方面,可以采用传引用的方式,比如
BOOL CKAveDlg::GetData(const char* FilePathname, double *&SwatchData)
在*号后面加&就ok了
b、内存分配的问题,当在函数中调用:
double * SwatchData = new double;
时,若是在程序中调用SwatchData[i]之类的,后面使用
delete SwatchData;时就有错,会出现内存的问题。具体原因,是因为越界的问题,当new了之后,只给了一个头地址,如果数目大于1就越界了。因此必须事先获取改数组的大小。或者采用以下两种方法:一,使用vector,但是必须使用vector.pushback(i);二,随时关注内存大小,如果越界,重新分配内存。