delete釋放指針 C 如果類中有一個(gè)指針數(shù)據(jù)成員,而我沒有用new。析構(gòu)函數(shù)要不要delete?
C 如果類中有一個(gè)指針數(shù)據(jù)成員,而我沒有用new。析構(gòu)函數(shù)要不要delete?C無(wú)論是哪種數(shù)據(jù),是否刪除都取決于空間是否分配了新的。1. 指向由函數(shù)脈沖定義的局部變量的指針。如果是局部變量,則不需
C 如果類中有一個(gè)指針數(shù)據(jù)成員,而我沒有用new。析構(gòu)函數(shù)要不要delete?
C無(wú)論是哪種數(shù)據(jù),是否刪除都取決于空間是否分配了新的。
1. 指向由函數(shù)脈沖定義的局部變量的指針。如果是局部變量,則不需要?jiǎng)h除;
2。如果類中有指針數(shù)據(jù)成員,并且沒有使用new,則析構(gòu)函數(shù)不需要?jiǎng)h除。在類或函數(shù)中,只要int*和char*不是新的,就不需要釋放它們。系統(tǒng)會(huì)自動(dòng)釋放他們占用的內(nèi)存,只有新的才會(huì)手動(dòng)刪除。原理:int*和char*是存在于堆棧上的局部變量,例如堆棧上的int*PP,P的值也是堆棧的地址。但當(dāng)int*P=newint時(shí),P在堆棧上。但是P的值是一個(gè)地址,它是堆上的一個(gè)地址。如果不刪除P,地址會(huì)一直被占用,不能被其他對(duì)象使用,所以我們需要在地址用完時(shí)釋放地址。因此堆??臻g將自動(dòng)釋放,而堆空間必須手動(dòng)釋放。
C delete指針數(shù)組的問題?
在C編程中刪除指針數(shù)組時(shí),需要同時(shí)刪除數(shù)組成員指針指向的內(nèi)存。
有兩種常見的方法。一種是在數(shù)組名前加上[]符號(hào),格式是刪除數(shù)組名。一種是遍歷數(shù)組成員并逐個(gè)刪除。不同的形式有相同的效果。小編建議第一條路。
此外,刪除指針后,建議將指針設(shè)置為null。該函數(shù)的作用是防止下次使用時(shí)出現(xiàn)指針故障,這通常稱為野生指針。
良好的編碼習(xí)慣是成功的一半。我希望我的回答能對(duì)這個(gè)問題有所幫助。