การลบตัวชี้ NULL ปลอดภัยหรือไม่
และมันเป็นรูปแบบการเข้ารหัสที่ดีหรือไม่?
make_shared
(c ++ 11) และmake_unique
(c ++ 14) โปรแกรมของคุณควรมีศูนย์ของnew
และdelete
new
delete
คลาสที่ออกแบบมาเพื่อจัดการทรัพยากรที่ส่วนประกอบมาตรฐานไม่สามารถทำงานได้แน่นอนสามารถทำสิ่งที่พวกเขาต้องทำ แต่ประเด็นคือพวกเขาทำสิ่งที่น่าเกลียดกับหน่วยความจำที่พวกเขาจัดการไม่ใช่รหัสผู้ใช้ปลายทาง ดังนั้นให้สร้างไลบรารี่ / ผู้ช่วยของคุณเองเพื่อทำnew
/ delete
และใช้คลาสนั้นแทนคลาส
delete
โดยไม่ต้องสายเดียวที่จะ ใช้RAIIแทน นั่นคือใช้std::vector<T> v(100);
แทนT* p = new T[100];
ใช้ตัวชี้สมาร์ทเช่นunique_ptr<T>
และshared_ptr<T>
ที่จะดูแลการลบแทนตัวชี้แบบดิบเป็นต้น