使用new动态分配内存

发表于:2007-06-17来源:作者:点击数: 标签:
我不知道应该在时候使用new动态分配内存 在使用new动态分配内存是有什么规律吗,指点指点我。谢谢! 一般是这样: 如果不使用动态分配,所有的临时变量都是建立在栈上的,而默认的栈空间只有1M,当调用层数过多,又使用了大量临时变量的时候,栈溢出是很普通

          我不知道应该在时候使用new动态分配内存
在使用new动态分配内存是有什么规律吗,指点指点我。谢谢! 

一般是这样:

如果不使用动态分配,所有的临时变量都是建立在栈上的,而默认的栈空间只有1M,当调用层数过多,又使用了大量临时变量的时候,栈溢出是很普通的问题。
当数据规模比较小的时候,使用临时变量会简化代码,而且由于栈是自动释放的,相对比较容易管理。不过自动释放也是一个缺点,不注意的话容易返回释放后的无效对象。
当数据规模比较大,数据之间关系又比较复杂的时候,过分依赖栈空间容易导致频繁的错误,而且不利于其他人的调用,这时候应该尽可能使用new来分配内存。

new的好处是分配空间几乎不受限制,而且分配之后的生存时间可以由你来控制。缺点是new和delete必须成对使用,不注意的话,很容易发生内存泄漏,并且相对栈,new的效率一般而言比较低。new也比较容易带来指针管理方面的麻烦。
我个人的习惯是,>1024Byte的内存空间一律用new的。
如果你不习惯new和delete的方式,可以找找“智能指针”方面的例子。

原文转自:http://www.ltesting.net