C++管理内存的API有哪些?
时间: 2023-09-06 22:12:22 浏览: 42
在C++中,管理内存的API主要包括以下几种:
1. new/delete运算符:用于动态分配和释放内存空间。通过new运算符可以在堆上动态地分配一块内存,返回指向该内存的指针;通过delete运算符可以释放之前分配的内存,避免内存泄漏。例如:
```cpp
int *p = new int;
*p = 10;
delete p;
```
2. malloc/free函数:用于动态分配和释放内存空间。malloc函数可以在堆上动态地分配一块内存,返回指向该内存的指针;free函数可以释放之前分配的内存,避免内存泄漏。例如:
```cpp
int *p = (int*)malloc(sizeof(int));
*p = 10;
free(p);
```
3. calloc/realloc/free函数:calloc函数用于动态分配一块内存,并将其中的所有位初始化为0;realloc函数用于重新调整之前分配的内存大小;free函数用于释放之前分配的内存,避免内存泄漏。例如:
```cpp
int *p = (int*)calloc(1, sizeof(int));
*p = 10;
p = (int*)realloc(p, 2 * sizeof(int));
free(p);
```
4. unique_ptr/shared_ptr/weak_ptr智能指针:用于管理动态分配的内存,避免内存泄漏和悬空指针问题。智能指针是一种封装了指针的类,可以自动释放指针所指向的内存空间。例如:
```cpp
std::unique_ptr<int> p(new int(10));
std::shared_ptr<int> q = std::make_shared<int>(20);
std::weak_ptr<int> r = q;
```
以上这些API都可以用于管理内存,但使用方法和适用场景略有不同。在实际开发中,我们需要根据具体需求选择合适的API,避免内存泄漏和悬空指针等问题。