VC中关于return的问题

发布时间:2015年1月16日 作者:未知 查看次数:1301

VC中关于return的问题


VC中关于return的问题
return语句用于退出当前所在的函数,return返回的数据类型与函数的返回值类型相同,可以返回一个常量、变量、表达式等。在使用return语句提前结束函数时,需要注意如果代码之前在堆中分配了内存,则在return之前应释放内存,以防止产生内存泄露。如用了int *pArray=new int[5];则在return之前需delete[] pArray;(当你对一个指针使用delete时,delete知道是否有数组大小信息的唯一方法就是由你来告诉它。如果你在使用的delete中加入了方括号,delete就假设那个指针指向的是一个数组,否则就假设指向一个单一的对象。
说明:在内置的类型中,比如int,char,long等delete 和 delte[]是没有区别的,但是如果是自定义的结构或类,则delete不会全部回收,就会造成内存泄露。
如:char* a = new char[10];
delete a;//这时候delete []a是没有区别的
但如果定义一个类,则不同。
class object{
~object(){std::cout << "~object()" << std::endl}
}
object* b = new object[10];
这时候delete b的析构函数只会调用一次。也就是只把b[0]的地址回收了,其它的b[1]--b[9]就会造成内存泄露。
调用delete []b就不会造成上述问题。



版权所有!www.sieye.cn
E.Mail:sieye@sohu.com QQ:66697110