在C++中,使用delete關鍵字刪除數組和使用智能指針的方式有一些區別。
int* arr = new int[5];
delete[] arr;
在刪除動態分配的數組時,需要使用delete[]關鍵字,而不是單獨的delete關鍵字。delete[]會調用數組中每個元素的析構函數,并釋放整個數組的內存空間。
std::unique_ptr<int[]> arr(new int[5]);
智能指針可以自動管理內存釋放,避免了手動調用delete的繁瑣過程。使用智能指針時,不需要使用delete關鍵字來釋放內存,智能指針會在其作用域結束時自動調用析構函數釋放內存。
總的來說,智能指針更加安全和方便,可以有效避免內存泄漏和野指針的問題,推薦在C++中使用智能指針來管理動態內存。