#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;
}
在这种情况下,number(1,2)
分配的内存在哪里?在堆或堆栈上?我们如何验证?
答案 0 :(得分:6)
除了几个C ++标准库函数之外,C ++还没有堆栈或堆的概念。
有些人将用new
分配的内容等同于堆,将所有其他内容分配到堆栈上。但static
存储和其他零碎的东西混淆了粗略的分类。
在您的情况下,number(1, 2);
是一个匿名临时用户,具有自动存储持续时间。一个好的编译器可能会注意到匿名临时的构造或销毁没有副作用,因此可能会从编译的二进制文件中完全删除它。所以第三种选择 - 根本没有记忆 - 对我来说似乎很可能。