การลบตัวชี้ 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>ที่จะดูแลการลบแทนตัวชี้แบบดิบเป็นต้น