動態內存管理配合指標,實現 C/C++ 對內存的精準控制,是系統級開發首選語言的關鍵原因。malloc/free 操作堆區,指標存儲於靜態/棧區,指向無名、無類型的堆內存塊。
void *malloc(size_t size); // 分配 size 字節,返回首地址
void free(void *ptr); // 釋放 ptr 指向的堆塊

void*,使用前必須強制轉型為具體類型指標。
#include
#include
int main() {
int *p = malloc(10 * sizeof(int));
if (!p) { perror("malloc"); return 1; }
for (int i = 0; i < 10; i++) p[i] = i * i;
for (int i = 0; i < 10; i++) printf("%d ", p[i]);
free(p);
p = NULL; // 防野指標
return 0;
}
班級成績統計:人數不定,靜態陣列要么浪費要么溢出。動態分配:
int n; scanf("%d", &n);
int *scores = malloc(n * sizeof(int));
// 使用 scores[0..n-1]
free(scores);
鏈表是動態內存極致體現:零到無限節點,按需增刪。

.o + .a → exe,庫代碼內含,體積大、多進程重複載入。.o + .so → exe,運行時載入共享庫,節省空間、易升級。動態內存管理是 C 語言掌控計算機資源的核心機制。理解 堆/棧/靜態區分工、指標作為堆塊句柄、malloc/free 成對使用、野指標預防,是寫出健壯系統代碼的基礎。