在堆栈上创建对象
Creating objects on the stack
我有一个包含大向量的类
class myClass
{
public:
myClass(int size)
private:
vector<int> myVector;
}
myClass::myClass(int size)
{
myvector = vector<int>(size);
}
如果我调用myClass o(100000)
则在堆栈上创建对象。但是,堆栈上到底有什么?我从堆栈中分配多少内存?向量的内容应该在堆上分配,对吧?
有人可以向我解释堆栈上到底是什么以及堆上有什么吗?
本质上,您可以将std::vector
概括为
template<typename T>
struct vector {
T* data;
size_t size;
size_t capacity;
};
各个实现可能会有所不同,但它们通常看起来像上面一样。
因此,只是在堆栈上创建的这个向量容器,保存数据的数组是从堆中提取的。
---编辑---
对于给定的堆栈变量,您可以使用sizeof
运算符来判断它需要多少堆栈空间,例如
myClass o(100000);
std::cout << "o's size is " << sizeof(o) << "n";
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何创建对象函数指针C++映射?
- C++创建对象数组
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何获取在 main() 函数中构造的类的创建对象?
- 基于文件中的条目创建对象
- 如何在构建对象堆栈时解决转换错误?
- 堆还是堆栈用于创建对象?
- 在堆和堆栈中创建对象的差异
- 在堆栈上创建对象的不同方法
- C++:如何在循环中的堆栈上创建对象
- 在堆栈中创建对象时,即使代码覆盖率为100%,函数覆盖率也较小
- 如何使用在另一个类的构造函数中的堆栈上接受参数的构造函数创建对象
- 在堆栈上创建对象
- 在堆栈上创建对象时分配的内存在哪里
- 在堆栈/堆上创建对象
- 何时在堆与堆栈中创建对象
- 将引用分配给新创建的堆栈分配对象时会发生什么
- 在堆栈/堆上创建对象
- 在堆栈上创建对象矢量?(c++)