您好,登錄后才能下訂單哦!
粘個(gè)代碼占位置,以后有時(shí)間把指針函數(shù),函數(shù)指針都補(bǔ)上
#include <iostream>using namespace std;void freePtr1(int* p1){ /*未釋放內(nèi)存前 -> p1 Address : 0012FDDC p1 value : 003429B8, 在這里,p1它也是一個(gè)變量,既然是一個(gè)變量, 那么它將會(huì)以值的傳遞,把外部變量p1傳到棧內(nèi),在棧內(nèi)產(chǎn)生一個(gè)地址:0012FDDC, 當(dāng)然,它的值不會(huì)變?nèi)匀皇侵赶蚨训刂罚?03429B8 。*/ delete p1; //系統(tǒng)回收p1值的地址003429B8處的內(nèi)存。 p1 = NULL;//對(duì)p1賦以NULL值即:00000000,注意:p1本身的地址并沒有變,變的是p1的值。 //釋放內(nèi)存后 -> p1 Address : 0012FDDC p1 value : 00000000 //,出棧后,p1由于是一個(gè)臨時(shí)對(duì)象,出棧后它會(huì)自動(dòng)被視為無效。}void freePtr2(int*& p2) { /*未釋放內(nèi)存前 -> p2 Address : 0012FEC8 p2 value : 003429B8, p2是一個(gè)指針的引用,即引用指向指針, 記住引用的特點(diǎn):對(duì)引用的對(duì)象直接操作。所以它的地址和值與棧外的main()函數(shù)中,p2的值是同一個(gè)。*/ delete p2; //對(duì)p2所引用的指針進(jìn)行釋放內(nèi)存,即:系統(tǒng)回收main()函數(shù)中 p2的值 003429B8 地址處的內(nèi)存。 p2 = NULL;//對(duì)main()函數(shù)中p2的指針賦以NULL值。 //釋放內(nèi)存后 -> p2 Address : 0012FEC8 p2 value : 00000000, //由于操作的對(duì)象都是main()函數(shù)中的p2,所以它將應(yīng)用到原變量中。}int main(){ int *p1 = new int [1]; //釋放內(nèi)存前-> p1 Address : 0012FED4 p1 value : 003429B8 freePtr1(p1); //釋放內(nèi)存后-> p1 Address : 0012FED4 p1 value : 003429B8 int *p2 = new int [1]; //釋放內(nèi)存前-> p2 Address : 0012FEC8 p2 value : 003429B8 freePtr2(p2);//*&的情況. //釋放內(nèi)存后-> p2 Address : 0012FEC8 p2 value : 00000000}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。