Aur*_*rus 5 c++ memory heap stack
所以基本上这是一个堆栈分配:
char inStack[10];
// and
MyStruct cl;
Run Code Online (Sandbox Code Playgroud)
这应该在堆中分配:
char* inHeap = new char[10];
// and
MyClass cl = new MyClass();
Run Code Online (Sandbox Code Playgroud)
如果MyClass包含char test[10]变量怎么办?这是否MyClass cl = new MyClass()意味着MyClass :: test的10byte长内容是在Heap而不是Stack中分配的
Set*_*gie 15
它将被分配在对象内部,因此如果对象在堆上,则数组将在堆上; 如果对象在堆栈上,则数组将在堆栈中; 如果对象在可执行文件的静态内存中,则数组也将存在.
在C++中,对象的成员是对象本身的一部分.如果你有对象的地址和它的大小,你知道该类的所有成员都将在该范围内的某个位置[address, address + size),无论内存中实际存在的位置(堆,堆栈等).
如果MyClass有一个char test[10]成员,它会被分配相同的方式的实例MyClass被分配.
MyClass mc; //mc.test is on the stack
MyClass * mcp = new MyClass; //mcp->test is on the heap
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
563 次 |
| 最近记录: |