#include<iostream> using namespace std; // // 動態建立一維陣列 在堆區開闢連續的記憶體: // 建立: // 資料型別 * 指標名 = new 資料型別[陣列長度]; // 釋放: // delete [] 指標名; // 注意: // 1、動態陣列沒有陣列名,不能用sizeof關鍵字 // 2、可以用陣列表示法和指標表示法兩種方式使用動態陣列 // 3、必!須!使用delete[] 釋放new[]申請出來的記憶體(不能使用delete )!!!! // 4、不!要!用delete[] 去釋放 不是new[]分配的記憶體 (c用的是malloc申請,free()釋放) !!! // 5、不要用delete[]重複釋放已經被釋放的記憶體,那樣相當於操作野指標 // 6、對空指標用delete[]是安全的,用完指標之後應該將指標置空,p = nullptr // 7、如果記憶體不足,呼叫new會產生異常,導致程式中止;如果在new關鍵字後面加(std::nothrow)選項, // 則返回nullptr,不會產生異常。 // // 為什麼用delete[]釋放陣列的時候,不需要指定陣列的大小?因為系統會自動跟蹤已分配陣列的記憶體。 // // // int main(void) { int* p = new (std::nothrow)int[10]; if (p == nullptr) { cout << "申請記憶體失敗" << endl; } else { for (int i = 0; i < 10; i++) { p[i] = i; cout << p[i] << endl; } } delete[] p; p = nullptr; return 0; }