C 10 C 中的新成員

2021-09-13 02:12:51 字數 1806 閱讀 9695

變數申請:

type* pointer = new type;    // 堆空間中單個記憶體單元申請

// ...

delete pointer // 釋放 pointer 所指向的單個記憶體單元

陣列申請:

type* pointer = new type[n]; // 堆空間中連續 n 個記憶體單元申請

// ...

delete pointer; // 釋放 pointer 所指向的連續記憶體單元

#include int main()

delete p;

return 0;

}

輸出:

p = 0x99dc008

*p = 15

p[0] = 1

p[1] = 2

p[2] = 3

p[3] = 4

p[4] = 5

p[5] = 6

p[6] = 7

p[7] = 8

p[8] = 9

p[9] = 10

分析:

問: p = new int[10]; p 指向的記憶體空間是 4 * 10 = 40 位元組嗎?

答: p所指向的記憶體空間至少占用 40 位元組。c++ 天生相容 c 語言的方式,因此在動態記憶體申請時,無法保證請求與實際獲得大小一致。

問: p = new int[10]; delete p; 發生了什麼?

答: 造成記憶體洩漏。p 指向了堆空間中的一片記憶體單元, delepe p; 將只釋放 p 所指向的第乙個記憶體單元,其餘記憶體單元將洩漏。

calloc 不是真正的初始化,是在申請記憶體成功之後,將其全部設定為 0.

int* pi = new int(1);

float* pf = new float(2.0f);

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

#include int main()

輸出:

*pi = 1

*pf = 2.000000

*pc = c

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

namespace name

/* ... */

}

#include namespace first

namespace second

; }

}int main()

;

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

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

return 0;

}

輸出:

first::i = 0

second::i = 1

p.x = 2

p.y = 3

c 語言動態記憶體分配傳送門

10 C 中的新成員

注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 4.4.5 一 動態記憶體分配 1 c 中的動態記憶體分配 c 中通過new關鍵字進行動態記憶體申請 c 中的動態記憶體申請是基於型別進行的 delete關鍵字用於記憶體釋放 釋放陣列記憶...

第10課 C 中的新成員

本文內容取自於對狄泰學院 唐佐林老師 c 深度解析 課程的學習總結 例項分析 c 中的動態記憶體分配 include intmain delete p return0 執行結果 new關鍵字與malloc函式的區別 new關鍵字是c 的一部分 malloc是由c庫提供的函式 new 以具體型別為單位...

第10課 C 中的新成員

1.1 c 中的動態記憶體分配 1 c 中通過new關鍵字進行動態記憶體申請 2 c 中的動態記憶體申請是基於型別進行的 3 delete關鍵字用於記憶體釋放 1 type pointer new type 2 3delete pointer 變數申請 1 type pointer new type...