new和delete
#include <iostream>
using namespace std;
int main6552() {
ios::sync_with_stdio(), cin.tie(nullptr), cout.tie(nullptr);
int* p = (int*)malloc(sizeof(int));
*p = 1;
free(p);
p = NULL;
//1.new是一个运算符,在标准库函数中就有,不需要导入头文件。
//malloc函数封装在头文件<malloc.h>中,要使用必须先导入头文件。
//2.使用malloc函数,必须用sizeof运算符给出申请空间的大小。
//new运算符则会自动计算出所需要申请空间的大小。
//3.malloc返回值通常需要进行强制类型转化。会返回泛型指针void*
//new运算符则可以直接返回对应数据类型的地址。
//4.malloc不能指定初始化值 new可以
//5.new在申请类,结构体,类对象空间自动调用构造函数,delete自动调用析构函数
int* pp = new int;
*pp = 2;
delete pp;
pp = NULL;
int* p1 = new int();//括号里默认初始值为零,可以在括号里赋值
int* p2 = new int[3];//返回的是数组首元素的地址
for (int i = 0; i < 3; ++i) p2[i] = i;
delete[]p2;
int* p6 = new int[3]{ 1, 2, 3 };
for (int i = 0; i < 3; i++) {
cout << p6[i] << " ";
}
cout << endl;
delete[] p6;
p6 = NULL;
int** pi = new int*;
delete pi;
pi = NULL;
//整型指针数组
int** pi2 = new int* [3]();
delete[]pi2;
pi2 = NULL;
//整型数组指针
int arr[2] = { 0 };
int(*p_arr)[2] = &arr;
int(**pi3)[2] = new (int(*)[2]);
delete pi3;
pi3 = NULL;
//new 整型的二位数组
int(*pi4)[3] = new int[2][3];
delete[]pi4;
pi4 = NULL;
//new函数指针的指针
void (**pi5)(int) = new (void (*)(int));
delete pi5;
pi5 = NULL;
return 0;
}