變數申請:
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...