Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

วิธี Initialize Memory ด้วย New Operator ใน C++


ข้อจำกัดของ 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 - ยืดหยุ่นที่สุด