※ 引述《wtchen (没有存在感的人)》之铭言:
: ______________
: 1. int* ptr; ptr -> |__未知的空间__|
: ______________
: 2. 呼叫函式 newArray ptr -> |__未知的空间__| <- local
: ______________
: 3. malloc 取得合法空间 ptr -> |__未知的空间__|
: ______________
: |___合法空间___| <- local
: ______________
: 4. 离开函式 ptr -> |__未知的空间__|
希望这张图可以更清楚描绘出更多细节,并移除合法和未知的空间等有歧义的用词。
┌────┐ ┌────┐ ┌────┐ ┌────┐
Heap │ │ │ │ │ 新配置 │ │ 已泄漏 │
│ │ │ │ │ 的空间 <─┐ │ 的空间 │
│ │ │ │ │(allocd)│ │ │(leaked)│
│ │ │ │ ├────┤ │ ├────┤
│ │ │ │ │ : │ │ │ │
│ │ │ │ │ : │ │ │ : │
│ │ ├────┤ ├────┤ │ │ : │
│ │ │ local ├─┐ │ local ├─┘ │ │
├────┤ ├────┤ │ ├────┤ ├────┤
Stack │ ptr ├─┐ │ ptr ├─┤ │ ptr ├─┐ │ ptr ├─┐
└────┘ ╧ └────┘ ╧ └────┘ ╧ └────┘ ╧
未初始化 函式呼叫 配置空间 函式返回
int *ptr; local = ptr; local = malloc();