动态内存管理 在 C++ 语言中 , 就是通过 new 和 delete 运算符 进行对象的 创建 与 释放 ;
在 C++ 语言中 , 为了兼容 C 语言 , 仍然可以使用 malloc 和 free 函数动态管理内存 ,
但是 更建议 开发者在 C++ 程序开发时 , 使用 new 和 delete 运算符 进行 动态内存的管理 ;
不建议在 C++ 中使用 malloc 和 free 进行动态内存管理 ;
使用 new 和 delete 运算符 可以为如下类型的变量 动态分配内存 :
new 运算符 分配堆内存 语法 : new 运算符 作用是 在 堆内存中 为某个类型分配 内存空间 ;
指针类型变量 = new 类型 ( 常量 ) // 创建 类 / 普通类型 变量
指针类型变量 = new 类型 // 创建 类 / 普通类型 变量 , 省略 常量
指针类型变量 = new 类型 [ 数字 ] // 创建数组 , 中括号中是 数组元素个数
new 运算符 使用示例 :
int* ptr = new int;
int* ptr = new int(9527);
int* ptr = new int[8];
int* ptr = new int[4][8];
在 C 语言中使用 malloc 函数 动态申请堆内存 , 使用 free 函数 释放内存 ;
在 C++ 语言中 , 使用 new 基础数据类型
申请内存 ,
int* p2 = new int;
使用 delete(指针变量)
释放内存 ;
delete(p2);
代码示例 :
// I. 基础类型内存分配
// C 语言中动态申请内存
int* p = (int*)malloc(sizeof(int));
*p = 10;
// C++ 语言中动态申请内存
int* p2 = new int;
*p2 = 20;
cout << "*p = " << *p << " , *p2 = " << *p2 << endl;
// C 语言中 释放内存 与 malloc 相对应
free(p);
// C++ 语言中 释放内存 与 new 相对应
delete(p2);
在 C 语言中使用 malloc 函数 动态申请堆内存 , 使用 free 函数 释放内存 ;
在 C++ 语言中 , 使用 new 基础数据类型[数组元素个数]
申请内存 ,
int* array2 = new int[2];
使用 delete(指针变量)
释放内存 ;
delete(array2);
代码示例 :
// II. 数组类型内存分配
// C 语言中动态申请内存
int *array = (int*)malloc(sizeof(int) * 2);
array[0] = 9527;
array[1] = 3859;
// C++ 语言中动态申请内存
int* array2 = new int[2];
array2[0] = 1234;
array2[1] = 5678;
cout << "array[0] = " << array[0] << " , array2[0] = " << array2[0] << endl;
// C 语言中 释放内存 与 malloc 相对应
free(array);
// C++ 语言中 释放内存 与 new 相对应
delete(array2);
代码示例 :
#include "iostream"
using namespace std;
int main()
{
// I. 基础类型内存分配
// C 语言中动态申请内存
int* p = (int*)malloc(sizeof(int));
*p = 10;
// C++ 语言中动态申请内存
int* p2 = new int;
*p2 = 20;
cout << "*p = " << *p << " , *p2 = " << *p2 << endl;
// C 语言中 释放内存 与 malloc 相对应
free(p);
// C++ 语言中 释放内存 与 new 相对应
delete(p2);
// II. 数组类型内存分配
// C 语言中动态申请内存
int *array = (int*)malloc(sizeof(int) * 2);
array[0] = 9527;
array[1] = 3859;
// C++ 语言中动态申请内存
int* array2 = new int[2];
array2[0] = 1234;
array2[1] = 5678;
cout << "array[0] = " << array[0] << " , array2[0] = " << array2[0] << endl;
// C 语言中 释放内存 与 malloc 相对应
free(array);
// C++ 语言中 释放内存 与 new 相对应
delete(array2);
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
}
执行结果 :
*p = 10 , *p2 = 20
array[0] = 9527 , array2[0] = 1234
Press any key to continue . . .