在堆栈或堆上创建的类成员
Class members created on stack or heap?
需要知道这样的3d矩阵是在堆栈中还是在堆上创建,如果在堆栈上,如何正确地新建和初始化默认值(memset)
class Matrix {
protected:
int n[9000][420]; // is stack or heap if VVV is pointer?
};
void main()
{
Matrix* t = new Matrix(); // created on heap
}
这一切都归结于如何创建父对象。
MyClass {
int n[10];
};
int main(...) {
MyClass *c1 = new MyClass; // everything allocated on heap,
// but c1 itself is automatic
MyClass c2; // everything allocated on stack
// ...
}
堆和堆栈当然是一个实现细节,但在这种情况下,我认为指定它是公平的。
数组n
是类Matrix
的直接成员,因此此类型的任何对象实例都直接包含n
的数据。特别是,如果在动态分配的内存中创建一个动态对象,那么数组就会在那里;如果您创建了一个自动对象,数组也将驻留在自动内存中。
相关文章:
- C++-我可以创建另一个类的成员并在构造函数中使用它吗
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 使用成员在类中创建 lambda 表达式
- 使用带有 ref 参数的成员函数创建线程时出现编译错误
- C++ 双向链表:使用矩阵类成员创建和填充列表
- 如何创建存储指向成员函数的指针的类 (C++)
- 使用 back_inserter 从结构的单个成员创建向量
- 为类的成员创建别名
- 使用各种数据类型成员创建对象的简便方法
- C 用数组作为成员创建对象
- Visual Studio 2015"非标准语法;使用"&"为成员创建指针"
- 用STD ::函数作为集体成员创建回调
- 如何为班级成员创建开关
- 如何为指针成员创建构造函数
- 如何为成员创建shared_ptr
- c++如何为同一成员创建公共和受保护的访问器
- 如何为指针成员创建对象
- 如何为包装需要2个参数的c函数的unique_ptr类成员创建自定义deleter
- 如何为成员的成员创建boost multi_index密钥
- 使用std::mem_fn为数据成员创建可调用包装