C ++在struct initialise之后释放内存?

时间:2015-03-28 19:36:16

标签: c++ struct free

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

struct data{
    int a;
    int b;

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

1 个答案:

答案 0 :(得分:2)

不,你不应该。

您没有在堆上创建结构,因此无需手动释放内存。在程序结束时,内存将被标记为可用于OS。

并且甚至没有考虑做delete &my_data,因为你几乎肯定会因为记忆被释放两次而得到一个秘密。

您需要使用动态分配,例如

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