用delete刪除陣列相當於delete[]嗎?
在處理動態數組時,理解刪除和刪除的區別是至關重要的使用delete刪除單個元素並使用delete[]刪除整個數組。
為什麼要刪除ptr 可能導致未定義的行為
在提供的程式碼中:
IP_ADAPTER_INFO *ptr = new IP_ADAPTER_INFO[100];
ptr 指向100 個IP_ADAPTER_INFO 結構的數組。用delete ptr刪除指標相當於刪除陣列的第一個元素。但是,這會留下剩餘的 99 個元素。這可能會導致內存洩漏。
反組譯程式碼分析
Visual Studio 2005 為delete ptr 和delete []ptr 產生的反彙編程式碼清楚地顯示了差異:
結論
避免未定義的行為並防止記憶體洩漏,請始終使用delete []ptr 來釋放用new動態分配的陣列。以上是`delete ptr` 與 `delete[] ptr`:為什麼一個是安全的,另一個是記憶體洩漏?的詳細內容。更多資訊請關注PHP中文網其他相關文章!