ข้อจำกัดของ new
Operator new ใน C++ จัดสรรหน่วยความจำเท่านั้น ไม่ initialize ค่า
Default Initialization (ค่าเริ่มต้น)
สำหรับ array of int ต้องการค่าเริ่มต้น 0 ใช้ syntax:
new int[10]();
ต้องใช้ empty parentheses () ไม่สามารถใช้ (0) หรือ expression อื่นได้ ใช้ได้เฉพาะ default initialization
วิธีอื่นสำหรับ Non-default Values
#include <iostream>
#include <cstring> // memset
#include <algorithm> // fill_n
int main() {
int myArray[10];
// 1. memset - ตั้งค่า 0 (byte-level)
memset(myArray, 0, 10 * sizeof(int));
// 2. fill_n - ตั้งค่าเฉพาะเจาะจง (เช่น 1)
std::fill_n(myArray, 10, 1);
// 3. loop - ควบคุมได้ละเอียดที่สุด
for (int i = 0; i < 10; ++i) {
myArray[i] = i * 2;
}
}
สรุป
new int[n]()- default init (0 สำหรับ int)memset- เร็ว สำหรับ 0 หรือ byte pattern เรียบง่ายstd::fill_n- type-safe สำหรับค่าเฉพาะเจาะจงloop- ยืดหยุ่นที่สุด