【发布时间】:2016-03-06 22:58:32
【问题描述】:
我有一个包含大向量的类
class myClass
{
public:
myClass(int size)
private:
vector<int> myVector;
}
myClass::myClass(int size)
{
myvector = vector<int>(size);
}
如果我调用myClass o(100000),对象会在堆栈上创建。但是,堆栈上到底是什么?我从堆栈分配多少内存?向量的内容应该在堆上分配,对吧?
谁能给我解释一下栈上到底是什么,堆上是什么?
【问题讨论】:
-
您可以使用
sizeof(o)来查找。 -
或者看看你的vector实现。堆栈上的每条数据都有固定的大小,因此您可以在其上放置新项目。如果向量的内容在堆栈上,那么您可以插入其中的项目数量将是有限的。
-
Yoy 可以使用
sizeof(myClass)检查堆栈上的数据量。无论向量的大小如何,堆栈内存的大小都是恒定的。 -
@5gon12eder 谢谢
标签: c++