new和delete是在c++中用来动态开辟和释放内存的关键字;这就不得不提起在c中经常使用的malloc函数和free函数开辟和释放内存; 目录 一、那么,首先回顾一下malloc和free的用法定义和特点: 二、接下来,我们看看c++中new和delete关键字的定义和特点; 一、那么,首先回顾一下malloc和free的用法定义和特点:定义: malloc函数原型:void * malloc(size_t size);用来在堆上动态开辟内存; free函数原型:void free(void *ptr);用来释放内存; 动态开辟的特点: 1.堆上开辟; 2.是一个函数; 3.不可初始化; 4.开辟失败,指针放回空; 5.不能开辟常量内存块; 例如: int *p1 = (int*)malloc(sizeof(int)); free(p1); 二、接下来,我们看看c++中new和delete关键字的定义和特点;定义: new:用来动态开辟内存 delete:用来释放空间以及资源; 动态开辟的特点: 1.在自主存取区域内开辟; 2.是一个关键字; 3.可初始化; 4.开辟失败后,会抛出异常; 5.可开辟常量内存块; 例如:int *p2 = new int(10); //初始化为10; delete p2; 三、那么,我们来看一下new和delete的具体使用:1、动态开辟一维数组: (1)c中malloc开辟
(2)c++中new开辟
2、动态开辟二位数组 (思路:先开辟一维数组,再在所开辟的一位数组的基础上再循环开辟) (1)c中使用malloc开辟
(2)c++中使用new开辟
四、重定位new:int a; char *p = new(&a)char('a'); 在a的内存池中,开辟一块内存给p使用,即p指向该内存,此时内存为char型 将a的内存称为内存池,可以自主管理内存;如图所示:
|
|
来自: 星光闪亮图书馆 > 《006、内存管理》