C++ - 動態內存分配

有時候一個程序需要很大的內存,有時需要很小的空間,比較有效率的做法就是動態內存分配。


用 new 運算符實現動態內存分配

  • 第一種用法,分配一個變量:
    P = new T;
    T 是任意類型名,P 是類型為*** T * 的指針。
    動態分配出一片大小為 sizeof(T)字節的內存空間,并且將該內存空間的
    起始地址***賦值給 P。比如:
int * pn;
pn = new int;
*pn = 5;
  • 分配一個數組
    P = new T[N];
    T: 任意類型名
    P:可I型為 T* 的指針
    N:要分配的數組元素的個數,可以是整型表達式
    動態分配除一篇大小為 N*sizeof(T)字節的存儲空間
int *pn;
int i = 5;
pn = new int[i*20];
pn[0] = 20;
pn[100] = 30;//編譯沒問題。運行時會導致數組越界
  • new 運算符返回值類型:
    new T;
    new T[n];
    這兩個表達式返回值的類型都是 *** T * ***
    int *p = new int;

  • 用“new”動態分配的內存空間,一定要“delete”運算符進行釋放
    delete 指針:該指針必須指向 new 出來的空間

int *p = new int ;
*p =5;
delete p;
delete p;//導致異常,一片空間不能被 delete 多次
  • 用“delete”釋放動態分配的數組,要加“[]”
    delete[] 指針://該指針必須指向 new 出來的數組
int *p = new int[20];
p[0] = 1;
delete[] p;

如果分配的空間沒有被回收就會成為程序的垃圾碎片。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. malloc()函數 1.1 malloc的全稱是memory allocation,中文叫動態內存分配。 ...
    Pitfalls閱讀 2,056評論 0 5
  • 我學C++數組的起初,想到能不能在“編譯時數組元素是可以變化,運行時才確定元素個數”的這一問題。于是我開始看書,上...
    Lucky寧閱讀 470評論 0 0
  • (JG-2014-08-20)(前半部分經過網上多篇文章對比整理)(后半部分根據ExceptionalCpp、C+...
    JasonGao閱讀 5,628評論 2 23
  • C語言中內存分配 在任何程序設計環境及語言中,內存管理都十分重要。在目前的計算機系統或嵌入式系統中,內存資源仍然是...
    一生信仰閱讀 1,198評論 0 2
  • 《七步掌握業務分析》作者是BABOK創作委員會的核心成員,所以這本書基本上是以BABOK為基礎的,感覺應該說是從實...
    盧禮瑾EWBOK閱讀 2,751評論 0 5