new ใช้สำหรับ dynamic memory allocation บน heap มีค่าใช้จ่ายหลายอย่าง และโปรแกรมเมอร์ต้องจัดการหน่วยความจำด้วยตนเอง (manual memory management)
ควรใช้ new เฉพาะเมื่อ:
- ไม่รู้ขนาดหน่วยความจำที่ต้องการตอน compile time
- ต้องการให้หน่วยความจำคงอยู่หลังออกจาก block/scope ปัจจุบัน
นอกจากนี้ มีกรณีน้อยมากที่ต้องใช้ dynamic allocation เพราะ C++ มี destructor เรียกอัตโนมัติเมื่อ object จบอายุ (scope) ใช้ free memory ได้ ทำให้ลูกๆ (member objects) ถูกปลดปล่อยพร้อมกัน
ตัวแปรแบบนี้เรียกว่า automatic variables ใช้ automatic storage ควรใช้เพราะ:
- เขียนเร็วกว่า
- รันเร็วกว่า (stack allocation)
- น้อยโอกาส memory/resource leaks