我有一个包含大 vector 的类
class myClass
{
public:
myClass(int size)
private:
vector<int> myVector;
}
myClass::myClass(int size)
{
myvector = vector<int>(size);
}
如果我调用 myClass o(100000)
,对象将在堆栈上创建。但是,堆栈上到底是什么?我从栈中分配了多少内存? vector 的内容应该分配在堆上,对吧?
谁能给我解释一下到底什么在栈上,什么在堆上?
最佳答案
基本上你可以将 std::vector
概括为
template<typename T>
struct vector {
T* data;
size_t size;
size_t capacity;
};
个别实现可能会有所不同,但它们通常看起来像上面那样。
所以只是在堆栈上创建了这个 vector 容器,其中保存数据的数组是从堆中提取的。
--- 编辑---
对于给定的堆栈变量,您可以使用 sizeof
运算符判断它需要多少堆栈空间,例如
myClass o(100000);
std::cout << "o's size is " << sizeof(o) << "\n";
关于c++ - 在堆栈上创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35833678/