int *obj = new int(6); delete obj; int *obj2 = new int(7); cout << *obj; // 輸出 7!
// 1. 釋放後立即置空 delete obj; obj = nullptr; // 或 obj = NULL; // 2. 使用智能指針(C++11 起推薦) std::unique_ptrobj = std::make_unique (6); // 自動釋放,無懸垂風險 // 3. 釋放後不再使用該指針,嚴禁二次讀寫
new 做三件事:分配原始內存 → 調用構造函數 → 返回類型化指針。delete 做兩件事:調用析構函數 → 釋放內存。指針變量本身屬於棧,不受 delete 影響。理解這一點,是避免「use-after-free」漏洞的基礎。