如何正确释放C++中使用new分配的内存

1949idc 2年前 (2024-09-18) 阅读数 281 #编程语言

在C++中,使用new关键字分配的内存需要手动释放

  1. 对于单个变量:
int* ptr = new int; // 分配内存
// ... 使用ptr做一些操作 ...
delete ptr; // 释放内存
  1. 对于数组:
int* arr = new int[10]; // 分配内存
// ... 使用arr做一些操作 ...
delete[] arr; // 释放内存
  1. 对于自定义类或结构体:
class MyClass {
    // ... 类的定义 ...
};

MyClass* obj = new MyClass; // 分配内存
// ... 使用obj做一些操作 ...
delete obj; // 释放内存
  1. 对于智能指针(推荐):

智能指针会在离开作用域时自动释放内存,这样可以防止内存泄漏。

#include <memory>

std::unique_ptr<int> ptr(new int); // 分配内存
// ... 使用ptr做一些操作 ...
// 不需要手动释放内存,当ptr离开作用域时会自动释放

请注意,在释放内存后,务必将指针设置为nullptr,以避免悬空指针(dangling pointer)问题。

int* ptr = new int;
delete ptr;
ptr = nullptr; // 避免悬空指针

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

© 2010 首途云安 & 厦门硕顿信息技术有限公司 & 闽ICP备11016866号  增值电信业务经营许可证:B1-20203020 地址:福建厦门思明区嘉禾路297号1806
高新技术企业
软件产品证书
计算机软件著作权
ISO认证
国家3A企业