读书人

对象返回函数的对象删除有关问题

发布时间: 2012-02-13 17:20:26 作者: rapoo

对象返回函数的对象删除问题
如下:
typedef struct
{
...
...
}S;

class A
{
private:
...
public:
S Func()
{
S k;
....
return k;
}
};

结构体对象 k 会不会在 return 操作后,由于没有进行delete 操作而引起内存泄漏?如果要 delete k,那应该如何操作?

[解决办法]
倒……
C++中没有new(申请堆空间),就不要delete。
k叫做局部对象,或者更贴切地说,叫“自动对象”,出了作用域就会自动销毁。
当返回Func时,会进行一个结构拷贝动作!
[解决办法]
搞清堆和栈是什么东西

管理好堆上的东西
至于站上的,不要在他自动消亡之后还用
[解决办法]
不会,
局部变量是在堆栈上的,系统帮你释放的
只有你用new在堆上申请的空间,才需要你去delete清理

读书人网 >C++

热点推荐