q12*_*26y -1 c++ memory heap stack
#include <iostream>
using namespace std;
struct number
{
int value;
int pos;
public:
number(int a,int b)
{
value=a;
pos=b;
}
};
int main() {
// your code goes here
number(1,2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,在哪里分配内存number(1,2)?在堆或堆栈上?我们如何验证它?
除了几个C++标准库函数之外,C++还没有堆栈或堆的概念.
有些人把new在堆上分配的东西和在堆栈上分配的所有其他东西等同起来.但static存储和其他零碎的泥泞粗糙的分类.
在您的情况下number(1, 2);是匿名临时和自动存储持续时间.一个好的编译器可能会注意到匿名临时的构造或销毁没有副作用,因此可能会从编译的二进制文件中完全删除它.所以第三种选择 - 根本没有记忆 - 对我来说似乎很可能.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |