C++第01课 C++与C的区别(五)
1.new和delete基本用法
new用来申请内存,delete用来释放内存
int main() { int* p = new int; delete p; p = nullptr; int* pp = new int[4]; delete []pp; pp = nullptr; //申请内存并初始化 int* pData = new int(100); cout << *pData << endl; delete pData; pData = nullptr; int* ppData = new int[4]{ 1,2,3,4 }; for (int i = 0; i < 4; i++) { cout << *(ppData + i) << endl; } delete[]ppData; ppData = nullptr; return 0; }
2.二维数组的申请过程
//用子函数实现二维数组内存申请 //返回值方式 int** myMalloc(int row, int col) { int** p = new int* [row]; for (int i = 0; i < row; i++) { p[i] = new int[col]; } return p; } //传参方式 void myMalloc(int** &p,int row,int col) { p = new int* [row]; for (int i = 0; i < row; i++) { p[i] = new int[col]; } } int main() { int** p = new int* [4]; for (int i = 0; i < 4; i++) { *(p + i) = new int[8]; } for (int i = 0; i < 4; i++) { delete[] * (p + i); } delete p; return 0; }
3.申请内存再做分配
int main() { //这里的memory是假定的一段内存 char* memory = new char[1024]; //下面一行的意思是把memory内存的前10*4个字节用来存放整数 int* pInt = new(memory) int[10]; //下面一行表示从pInt后10*4个字节后申请10个字节用来存放字符 //也可以写作char* pStr=new(memory+10*4) char[10]; 其中4表示sizeof(int) char* pStr = new(pInt + 10) char[10]; delete[]memory; return 0; }
浙公网安备 33010602011771号