陣列004 動態建立一維陣列

墨点Moz發表於2024-07-15
#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;
}

相關文章