内存是分配:堆或堆栈

Memory is allocation : heap or stack?

本文关键字:堆栈 分配 内存      更新时间:2023-10-16
#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)的内存在哪里分配?在堆上还是堆叠上?我们如何验证它?

除了几个C++标准库函数外,C++没有堆栈的概念。

有些人将与new分配的东西等同于堆上,而所有其他东西都等同于在堆栈上分配的东西。但是static存储和其他零碎的东西混淆了粗略的分类。

在您的情况下,number(1, 2);是匿名的临时的,具有自动存储持续时间。一个好的编译器可能会注意到在构造或销毁匿名临时文件时没有副作用,因此可能会将其从编译的二进制文件中完全删除。所以第三种选择——根本没有记忆——在我看来是可能的。