我以这种方式创建my_data。我应该在程序结束时手动释放内存吗?如果是的话怎么办? free()给我转换错误,而delete()想要指针。
struct data{
int a;
int b;
data():
a(1),
b(2) {}
} my_data;
答案 0 :(得分:2)
不,你不应该。
您没有在堆上创建结构,因此无需手动释放内存。在程序结束时,内存将被标记为可用于OS。
并且甚至没有考虑做delete &my_data
,因为你几乎肯定会因为记忆被释放两次而得到一个秘密。
您需要使用动态分配,例如
data* pdata = new data; // needs delete pdata