在C++中,动态内存管理指的是在程序运行过程中根据需要分配和释放内存。这可以让你更有效地管理内存资源,避免内存浪费和溢出。C++提供了两个主要的动态内存管理函数:new
和delete
(或malloc
和free
,但它们是C语言中的函数,不是C++中的推荐做法)。
以下是使用new
和delete
进行动态内存管理的示例:
- 分配内存:
int* p = new int; // 分配一个整数的内存空间,并将其地址赋给指针p
- 释放内存:
delete p; // 释放指针p所指向的内存空间
- 分配多个内存块:
int* arr = new int[10]; // 分配一个包含10个整数的内存空间,并将其地址赋给指针arr
- 释放多个内存块:
delete[] arr; // 释放指针arr所指向的内存空间(注意:使用`delete[]`而不是`delete`)
- 使用智能指针(推荐):
为了避免内存泄漏和悬挂指针等问题,建议使用智能指针(如std::unique_ptr
、std::shared_ptr
等)进行动态内存管理。智能指针会在其生命周期结束时自动释放所管理的内存。
例如,使用std::unique_ptr
:
#include
std::unique_ptr p(new int); // 分配一个整数的内存空间,并将其地址赋给智能指针p
当p
离开其作用域时,它所管理的内存将自动释放。