在 C/C++ 编程中,内存管理是核心基础技能,而
malloc/free
和new/delete
作为两套内存分配释放机制,是面试中高频出现的考点。
一、内存管理的 "双生花":基础概念解析
1.1 malloc/free:C 语言的内存管家
malloc
全称是 "memory allocation",是 C 标准库中用于动态内存分配的函数,其原型为:
void* malloc(size_t size);
- 从堆 (heap) 中分配指定字节数的内存
- 分配成功返回指向内存起始地址的 void * 指针,失败返回 NULL
- 分配的内存空间未初始化,内容为随机值
free
用于释放malloc
分配的内存,原型为:
void free(void* ptr);
- 只能释放
malloc
/calloc
/realloc
分配的内存 - 释放后指针应置为 NULL,避免野指针
- 多次释放同一指针会导致未定义行为