如何在C ++中选择堆分配与堆栈分配? [英] How do I choose heap allocation vs. stack allocation in C++?
本文介绍了如何在C ++中选择堆分配与堆栈分配?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
其中一个C ++功能将它与其他语言区分开就是将复杂对象分配为成员变量或局部变量,而不是总是分配 new
。但是这会导致在任何给定情况下选择哪个问题。
有没有一些选择如何分配变量的标准?我应该在什么时候将成员变量声明为直接变量,而不是作为引用或指针?什么时候应该使用 new
分配变量,而不是使用分配在堆栈上的局部变量?
解决方案
其中一个C ++功能将它与其他语言区分开来
...是手动进行内存分配。但是让我们离开:
- 当对象必须长时间运行时,即在一个对象必须超过一定范围时,是昂贵的或不可能复制或移动,
- 当对象很大(其中如果你想在安全的一边,可能意味着几个千字节),以防止堆栈溢出,即使对象只是暂时需要的,