C 動態記憶體分配與命名空間

2021-09-13 12:25:21 字數 1511 閱讀 9913

1、c++中的動態記憶體分配

malloc是基於位元組來進行動態記憶體分配的,new則是基於型別來進行動態記憶體分配

// 變數申請:

type * pointer = new type; // 從堆空間獲取乙個新的type型別的空間

// 使用和c語言一樣

delete pointer; // 這裡指的是pointer所指向的那個元素的記憶體空間被釋放

// 陣列申請:

type * pointer = new type[n]; // n指數組大小,陣列元素個數,並非位元組數

// delete pointer; // 陣列的釋放,需要在delete後面加,和變數有區別

// delete 說明所要釋放的指標是指向一片陣列空間的,釋放整個陣列空間,如果用delete的話,pointer指向的是陣列的首元素位址,釋放的就是首元素的記憶體空間,其餘元素的記憶體空間並沒有釋放,會造成記憶體洩漏

#include int main()

delete p; // 釋放陣列

return 0;

}

new關鍵字與malloc函式的區別:

new關鍵字的初始化:

int*   pi = new int(1);

float* pf = new float(2.0f);

char* pc = new char('c')l

2、c++中的命名空間

在c語言中只有乙個全域性作用域

c++中提出了命名空間的概念

定義:

namespace name

/* ... */

}

命名空間的使用

using namespace name;     // 使用整個命名空間

using name::variable; // 使用命名空間中的變數

::variable; // 使用預設命名空間中的變數

#include namespace first

namespace second

; }

}int main()

;

printf("p.x = %d\n", p.x);

printf("p.y = %d\n", p.y);

return 0;

}

命名空間解決了全域性變數命名衝突的問題

3、小結

c++ 中內建了動態記憶體分配的專用關鍵字

c++ 中的動態記憶體分配可以同時進行初始化

c++ 中的動態記憶體分配時基於型別進行的

c++ 中命名空間概念用於解決名稱衝突問題

動態記憶體分配 命名空間

c 中的動態記憶體分配 c 中通過new關鍵子進行動態記憶體申請 c 中的動態記憶體申請時基於型別進行的 delete關鍵子用於記憶體釋放c語言中是通過庫函式中的malloc函式實現動態記憶體分配 在一些簡單的硬體平台中,可能就不能支援c的記憶體分配了 變數申請 type pointer new t...

動態記憶體與命名空間

動態記憶體 c語言 malloc realloc calloc free c 語言 new delete 1.c語言的動態分配是通過函式,c 是通過運算子 2.c語言的動態分配不能和c 混用 new和delete的用法 new兩種用法 1.分配單個記憶體 2.分配連續記憶體 分配單個記憶體也有兩種情...

c語言動態記憶體分配 C 動態記憶體分配

動態記憶體分配 雖然通過陣列就可以對大量的資料和物件進行有效地管理,但是很多情況下,在程式執行之前,我們並不能確切地知道陣列中會有多少個元素。這種情況下,如果陣列宣告過大,就會造成浪費 宣告過小,就會影響處理。在c 中,動態記憶體分配技術可以保證程式在執行過程中按照需要申請適量記憶體,使用後釋放,從...