目录 一、为什么需要动态内存分配? 1. 静态与自动内存的局限 2. 动态内存分配的优势 二、malloc()函数 1.malloc()函数原型 2. malloc()函数的底层行为 3.使用malloc()函数的基本步骤 4.sizeof运算符的最佳实践 三、free()函数 1.free()函数原型与头文件 2. free()的底层行为 3. 使用free()的规则与陷阱 四、常见动态内存错误及防御性编程 1. 内存泄漏(Memory Leak) 2. 悬空指针(Dangling Pointer) 3. 越界访问(Out-of-Bounds Access) 4. 未初始化内存访问 5. 重复释放(Double Free) 五、其它相关用法总结 1. calloc():清零的分配器 2. realloc():调整已分配内存的大小 3. 内存碎片化 4. 智能指针(C++) 六、总结 一、为什么需要动态内存分配? 1. 静态与自动内存的局限 静态内存(Static Storage):全局变量、static变量,生命周期贯穿整个程序。 自动内存(Automatic Storage):局部变