我在寻找一个C++中关于在堆栈或堆上分配对象的经验法则。我在SO上找到了很多讨论,很多人说,这取决于对象的生命周期。如果你需要比函数作用域更长的生命周期,就把它放在堆上。这是完全有道理的。
但是让我困惑的是,很多人说,如果对象很小,就将其分配到堆栈上。如果对象很大,就将其放到堆上。但是他们没有说明如何确定一个对象是否很大?
我有以下问题:
- 如何确定一个对象是否很大?
- 堆栈最大大小是多少?每个操作系统的堆栈大小都不同吗?
- 我有一个包装
vector<string>
的包装类。它将有大约100个项目。如果我将这个类分配到堆栈上,会导致堆栈溢出吗?我尝试了一下,但它完美地工作了。不确定我做错了什么。