C++ 指標動態記憶體分配

风陵南發表於2024-05-09

動態記憶體分配

  • 動態記憶體分配:即由程式設計師手動的進行記憶體空間的分配、記憶體空間的釋放的記憶體管理操作
  • C++程式碼中,變數、陣列等物件的建立,是由C++自動分配記憶體的,稱之為(自動)靜態記憶體分配
    • (自動)靜態記憶體管理,不會進行記憶體空間的自動清理。(無垃圾回收機制)
    • 需要手動的管理記憶體,即手動分配,用完清理

new運算子

  • 用於申請並分配記憶體空間並提供指向該空間的指標(記憶體地址)
  • 基本語法:
    • new type 申請普通變數空間
    • new type[] 申請陣列空間

delete運算子

  • 用於釋放記憶體,僅可用於new運算子申請的記憶體區域
  • 基本語法:
    • delete 指標 刪除普通變數空間
    • delete[] 指標 刪除陣列空間
  • 建議:寫完new後,立刻寫delete,然後再寫業務邏輯程式碼(避免忘記)
    int *pt = new int;
    *pt = 10;
    cout << "申請記憶體空間存放:" << *pt << endl;
    delete pt;
    cout << "pt記憶體空間已釋放" << endl;

    int *pt2 = new int[3];
    pt2[0] = 1;   // 指標也可以用下標, 等同於*(p+0)
    *(pt2 + 1) = 2;  // 等同於 pt[1]

    cout << "*pt2申請記憶體空間大小:" << sizeof(pt2) << endl;
    cout << *pt2 << endl;
    cout << pt2[1] << endl;
    delete[] pt2;  // 釋放記憶體空間
    cout << "pt2記憶體空間已釋放" << endl;

相關文章