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

C++ Releasing memory after struct initialise?

本文关键字:释放 内存 初始化 结构 C++      更新时间:2023-10-16

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

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

不,你不应该。

您没有在堆上创建结构,因此不需要手动释放内存。该内存将在程序结束时标记为可供操作系统使用。

甚至不要想做delete &my_data,因为当内存被释放两次时,你几乎肯定会得到一个sefgault。

如果使用动态分配(如),则需要

data* pdata = new data; // needs delete pdata