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
我正在以这种方式创建 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