Eri*_*pir 1 c++ heap stack memory-management
如果我有以下代码:
for(...){A a; }
会在堆上还是在堆栈上分配?
小智 8
当你说:
for (...) { A a; }
Run Code Online (Sandbox Code Playgroud)
变量a不是静态构造的.那将是:
for (...) { static A a; }
Run Code Online (Sandbox Code Playgroud)
实际上在您的代码中,a是在堆栈上创建的自动对象.但是,这并不意味着没有动态分配.如果A看起来像这样:
struct A {
A() { p = new char[100]; }
char *p;
};
Run Code Online (Sandbox Code Playgroud)
然后当你说:
for (...) { A a; }
Run Code Online (Sandbox Code Playgroud)
ap的存储是在堆栈上创建的,但是ap指向的存储是动态创建的.
| 归档时间: |
|
| 查看次数: |
365 次 |
| 最近记录: |