Có an toàn để xóa một con trỏ NULL?
Và nó có phải là một phong cách mã hóa tốt?
make_shared
(c ++ 11) và make_unique
(c ++ 14) chương trình của bạn nên chứa zero của new
vàdelete
new
hoặc delete
. Các lớp được thiết kế để quản lý tài nguyên, trong đó các thành phần tiêu chuẩn không thể thực hiện công việc, tất nhiên có thể làm những gì chúng cần làm, nhưng vấn đề là chúng làm những thứ xấu xí với bộ nhớ mà chúng quản lý, chứ không phải mã người dùng cuối. Vì vậy, hãy tạo lớp thư viện / trình trợ giúp của riêng bạn để làm new
/ delete
và sử dụng lớp đó thay vì chúng.
delete
. Sử dụng RAII thay thế. Đó là, sử dụngstd::vector<T> v(100);
thay vìT* p = new T[100];
sử dụng các con trỏ thông minh nhưunique_ptr<T>
vàshared_ptr<T>
chăm sóc xóa thay vì các con trỏ thô, v.v.