new關鍵子的用法

2020-08-14 21:08:15

C:
malloc:
void *malloc(size_t size);
1.返回值型別不安全
2.開闢大小由使用者控制,空間浪費或不足
C++:
new:
1.開闢記憶體
2.記憶體初始化
new和malloc的區別:
1.new返回值安全
malloc返回值不安全
2.new還可以初始化
malloc只能開闢記憶體
3.new不需要計算開闢記憶體
malloc需要計算開闢記憶體
4.new開闢失敗拋出異常
malloc開闢失敗,返回NULL
5.new在自由儲存區域
malloc在堆上
C語言一維陣列的開闢與釋放

int* parr = (int*)malloc(sizeof(int)*10);
free(parr);

C++一維陣列的開闢與釋放

int* parr = new int[10];
delete[] parr;

C語言二維陣列的開闢與釋放

int** parr = (int**)malloc(sizeof(int*)*3);
for(int i = 0;i < 3;i++)
{
 parr[i] = (int*)malloc(sizeof(int)*4);
}
for(int i = 0;i < 3;i++)
{
 free(parr[i]);
}
free(parr);

C++二維陣列的開闢與釋放

int** parr = new int*[3]();
for(int i = 0;i < 3;i++)
{
 parr[i] = new int[4];
} 
for(int i = 0;i < 3;i++)
{
 delete[] parr[i];
}
delete[] parr;