函式中new和delete的注意點

2021-07-23 09:07:19 字數 664 閱讀 9216

來看乙個典型的例子

關於指標的一些段錯誤,是因為記憶體釋放的不對,這條例子是符合要求的,因為指標

已經new出,完全可以使用delete將其釋放,在函式中傳入指標的時候,是可以進行記憶體

釋放的。

這個例子就有記憶體洩露的問題了。因為在函式中傳入的時候,是拷貝複製的指標,所以原先的指標變數i根本沒有申請到空間,這時候釋放,很明顯造成錯誤。

如果想要使用這樣的機制,可以將new的變數通過返回值傳輸,然後用i接收。另外就是使用指標的引用和指標的指標。

綜上所述,函式若已指標為引數,不可在實現中為該指標申請空間。因為傳參機制,是將這個指標複製,若引數為指標,形參指向申請到的空間,實參卻沒有變。此時形參指向的空間無法釋放。

問題思考 同樣是傳指標,為何釋放空間卻沒有問題。因為形參複製實參,實參指向該空間,所以形參也指向該空間。釋放沒有問題。

關於指標的一些段錯誤,是因為記憶體釋放的不對,這條例子是符合要求的,因為指標已經new出,完全可以使用delete將其釋放,在函式中傳入指標的時候,是可以進行記憶體釋放的。

C 開發DLL中使用new和delete注意事項

報錯情況 1,在 dll 中用 new 來建立宿主程式中的物件,然後把這個物件指標儲存到宿主程式,當 dll 被解除安裝後,凡是涉及到這個指標的呼叫都會報錯,包括 delete 這個指標也會有錯。2,在dll中new出乙個物件,然後在不需要使用時進行delete,結果會報如下錯誤 分析原因 因為ne...

C 中new和delete的用法

首先,new和delete運算子是用於動態分配和撤銷記憶體的運算子。一 new用法 1.開闢單變數位址空間 使用new運算子時必須已知資料型別,new運算子會向系統堆區申請足夠的儲存空間,如果申請成功,就返回該記憶體塊的首位址,如果申請不成功,則返回零值。new運算子返回的是乙個指向所分配型別變數 ...

C 中new和delete的用法

c 中new和delete的用法 對於計算機程式設計而言,變數和物件在記憶體中的分配都是編譯器在編譯程式時安排好的,這帶來了極大的不便,如陣列必須大開小用,指標必須指向乙個已經存在的變數或物件。對於不能確定需要占用多少記憶體的情況,動態記憶體分配解決了這個問題。new和delete運算子是用於動態分...