当前位置: 技术问答>linux和unix
弱智问题:new和delete必须成对出现吗?
来源: 互联网 发布时间:2015-05-19
本文导语: 各位大虾,为了图省事,我的程序中有许多类似这样的语句: MibTableP_Alarm -> find_index("1") -> get_nth(4) -> replace_value( new SnmpInt32(SnmpInt32_CurVal); 在后面,我没有delete语句与new对应。 我不知道,new操...
各位大虾,为了图省事,我的程序中有许多类似这样的语句:
MibTableP_Alarm -> find_index("1") -> get_nth(4) -> replace_value(
new SnmpInt32(SnmpInt32_CurVal);
在后面,我没有delete语句与new对应。
我不知道,new操作后占用的内存空间是否一直保持到程序终止。如果是的话,我这个程序运行多日以后,势必会耗尽所有的内存空间吧!
请大虾指点!
MibTableP_Alarm -> find_index("1") -> get_nth(4) -> replace_value(
new SnmpInt32(SnmpInt32_CurVal);
在后面,我没有delete语句与new对应。
我不知道,new操作后占用的内存空间是否一直保持到程序终止。如果是的话,我这个程序运行多日以后,势必会耗尽所有的内存空间吧!
请大虾指点!
|
当然不是,new看你的需要,delete也要看你的需要了
|
可以不成对出现,用stl的auto_ptr。但实际上是stl自动调用了delete。
|
楼上的,如果你使用了new/malloc,你不使用delete/free,那么内存将一直保存到你的程序退出才会释放
func()
{
T test(...);
....
} // 这种形式test才会被自动释放
func()
{
T test(...);
....
} // 这种形式test才会被自动释放
|
C++中的确是这样,new的内存必须用delete释放掉
|
必须用delete释放,否则占用的内存会一直保持到进程终止。
|
new和delete肯定会成对出现,
析构函数就不一定
析构函数就不一定