+ -
当前位置:首页 → 问答吧 → 问个小问题,int中如果提前return,数组等等数据会不会自动析构?

问个小问题,int中如果提前return,数组等等数据会不会自动析构?

时间:2011-12-11

来源:互联网

问个小问题,VC6中 int函数中中如果提前return,数组,int,string,double会不会自动析构?

会产生内存泄露么?

作者: martinfa   发布时间: 2011-12-11

一般不会,如果你在一个逻辑分支内return,那么编译器会把之前压入栈中的空间全部释放掉。数组的话,要看动态还是静态,还要看上下文,具体问题具体分析了。

作者: LinuxTiger   发布时间: 2011-12-11

引用 1 楼 linuxtiger 的回复:
一般不会,如果你在一个逻辑分支内return,那么编译器会把之前压入栈中的空间全部释放掉。数组的话,要看动态还是静态,还要看上下文,具体问题具体分析了。


一般不会内存泄露?还是一般不会自动析构?

数组这样的 string* t = new string[LINES];

作者: martinfa   发布时间: 2011-12-11

引用 2 楼 martinfa 的回复:

引用 1 楼 linuxtiger 的回复:
一般不会,如果你在一个逻辑分支内return,那么编译器会把之前压入栈中的空间全部释放掉。数组的话,要看动态还是静态,还要看上下文,具体问题具体分析了。


一般不会内存泄露?还是一般不会自动析构?

数组这样的 string* t = new string[LINES];


普通的变量肯定会自动析构,你给的那个动态数组必须要看执行到delete没有,如果没执行到,那就是内存泄露。

作者: LinuxTiger   发布时间: 2011-12-11

肯定没执行到delete,那我在提前return的情况下先执行一个delete命令就行了。。。。
谢谢

作者: martinfa   发布时间: 2011-12-11