C++ 在结构初始化后释放内存?

C++ Releasing memory after struct initialise?

我正在以这种方式创建 my_data。我应该在程序结束时手动释放内存吗?如果是,该怎么做? free() 给我转换错误,而 delete() 需要指针。

struct data{
    int a;
    int b;

    data():
        a(1),
        b(2) {}
} my_data;

不,你不应该。

你不是在堆上创建结构,所以不需要手动释放内存。该内存将在程序结束时标记为可供 OS 使用。

并且甚至不要考虑这样做 delete &my_data,因为您几乎肯定会得到一个 sefgault,因为内存被释放了两次。

如果使用

等动态分配,则需要
data* pdata = new data; // needs delete pdata