C++ 的动态内存分配库函数主要用于在程序运行时分配和释放内存。这些函数包括:
new
和 delete
:用于分配和释放单个对象的内存。
new
用于为对象分配内存,并返回指向该对象的指针。如果分配失败,它会抛出一个 std::bad_alloc
异常。delete
用于释放由 new
分配的内存。它调用对象的析构函数,然后释放内存。示例:
int* p = new int; // 分配一个 int 类型的内存空间
*p = 42; // 给这个 int 赋值
delete p; // 释放内存
new[]
和 delete[]
:用于分配和释放对象数组的内存。
new[]
用于为对象数组分配内存,并返回指向第一个对象的指针。如果分配失败,它会抛出一个 std::bad_alloc
异常。delete[]
用于释放由 new[]
分配的内存。它调用数组中每个对象的析构函数,然后释放内存。示例:
int* arr = new int[5]; // 分配一个包含 5 个 int 的数组
arr[0] = 42; // 给第一个 int 赋值
delete[] arr; // 释放内存
malloc()
和 free()
:这些是 C 语言中的内存分配和释放函数,也可以在 C++ 中使用。但是,它们不会调用对象的构造函数或析构函数。
malloc()
用于分配指定大小的内存块。如果分配成功,它返回指向内存块的指针;否则,返回 nullptr
。free()
用于释放由 malloc()
分配的内存块。示例:
#include <cstdlib>
int* p = (int*) malloc(sizeof(int)); // 分配一个 int 类型的内存空间
*p = 42; // 给这个 int 赋值
free(p); // 释放内存
注意:在 C++ 中,通常建议使用 new
和 delete
(或 new[]
和 delete[]
)而不是 malloc()
和 free()
,因为它们会自动处理对象的构造和析构。此外,使用智能指针(如 std::unique_ptr
和 std::shared_ptr
)可以更好地管理动态分配的内存,避免内存泄漏和其他问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。