C++在结构初始化后释放内存
C++ Releasing memory after struct initialise?
我用这种方式创建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
相关文章:
- 如何在c++中释放内存
- 为什么这个 std::queue/指向结构的指针列表直到 List.Size() == 0 才释放内存?
- std::unordered_map析构函数不释放内存?
- 在C++中释放内存期间,迭代器与指针有何不同
- 使用共享指针时,从共享指针本身释放内存的机制是什么
- 释放内存(主题模板)时出现问题
- 使用后自动释放内存
- C++ 如何释放内存
- 从函数内对象的向量中释放内存
- C++ 在不释放内存的情况下调用析构函数
- 多个线程之间的获取-释放内存顺序
- C++ - 析构函数只是释放内存还是实际删除对象
- 使用 RAII 替换最终块以释放内存
- 如何通过带有指向基类的指针的删除运算符释放内存
- 代码中的"sprintf"用法是否需要释放内存?
- C++何时使用 delete[] 并正确释放内存?
- 为什么此获取和释放内存围栏不能给出一致的值?
- 抛出新表达式的参数子表达式时释放内存
- 在这种情况下,如何释放内存?
- 在 c++ 中应按什么顺序释放内存?