C 中指向已釋放記憶體的指標
刪除指標後,引用同一物件的其他指標的有效性會出現混亂。本文旨在闡明 C 中的這種行為。
考慮以下程式碼:
<code class="cpp">A* a = new A(); A* b = a; delete a; A* c = a; // Illegal (C++11) A* d = b; // Debatable legality // Points to deallocated memory, Undefined in C++11 A* aAddr = &a;</code>
C 11 行為:
C 14 行為:
根據 C 11 標準,使用無效的指標值(包括複製它)會導致未定義的行為。在 C 14 中,此類操作具有實現定義的行為,這意味著該行為可能會因不同的編譯器和作業系統而異。
因此,在 C 11 和 C 14 中,避免使用已實現的指標至關重要。已刪除或引用已釋放的記憶體。這樣做可能會導致不可預測和潛在錯誤的行為。
以上是在 C 中刪除一個引用相同物件的指標後會發生什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!