C++ new
C++中利用new操作符在堆區(qū)開辟數(shù)據(jù)
堆區(qū)開辟的數(shù)據(jù),由程序員手動(dòng)開辟,手動(dòng)釋放,釋放利用操作符 delete
?
語法:new 數(shù)據(jù)類型
利用new創(chuàng)建的數(shù)據(jù),會(huì)返回該數(shù)據(jù)對應(yīng)的類型的指針
開辟單個(gè)內(nèi)存
語法:new 數(shù)據(jù)類型(初始值)
#include <iostream>
using namespace std;
int* get_num()
{int* a = new int(10);return a;
}
int main()
{int* res = get_num();cout<<*res<<endl;delete res;return 0;
}
開辟數(shù)組
#include <iostream>
using namespace std;
int main()
{// 開辟一維數(shù)組int* a = new int[10];for(int i = 0;i<10;i++)a[i] = i;for(int i = 0;i<10;i++)cout<<a[i];cout<<endl;// 開辟一維數(shù)組的同時(shí)賦值int* a2 = new int[5]{1,2,3};for(int i = 0;i<5;i++)cout<<a2[i];cout<<endl;// 開辟二維數(shù)組// int (*a3)[5]表示數(shù)組指針int (*a3)[5] = new int[5][5];for(int i = 0;i<5;i++){for(int j = 0;j<5;j++)a3[i][j] = 10;}cout<<*(a3[4]+4)<<endl;// 開辟二維數(shù)組的同時(shí)賦值// int (*a4)[5]表示數(shù)組指針int (*a4)[5] = new int[5][5]{{1,2,3,4,5},{6,7,8,9,10}};cout<<a4[1][2]<<endl;
}
delete
delete釋放的是開辟的內(nèi)存中的變量,開辟的內(nèi)存實(shí)際沒有被釋放。
#include <iostream>
using namespace std;
int main()
{int *a = new int(5);delete a;// a所指向的地址依舊存在,沒有被釋放cout<<a<<endl;// a所指向的地址中的值被釋放,此時(shí)*a是一個(gè)垃圾數(shù)cout<<*a<<endl;*a = 100;cout<<*a<<endl;
}
總結(jié)
- 上一篇: 左尺桡骨拍片多少钱
- 下一篇: C++二维数组名与数组指针的思考