C语言中的主要内存分配函数包括:
1. `malloc()`
- 函数原型:`void *malloc(size_t size)`
- 功能:动态分配指定大小(以字节为单位)的连续内存空间。
- 返回值:成功分配内存时,返回指向该内存区域的指针;若失败(如内存不足),返回NULL。
- 细节:分配的内存区域内容未初始化,可能包含垃圾数据。
2. `calloc()`
- 函数原型:`void *calloc(size_t nmemb, size_t size)`
- 功能:动态分配指定数量(nmemb)和大小(size)的连续内存空间,并将所有位初始化为0。
- 返回值:成功分配内存时,返回指向该内存区域的指针;若失败(如内存不足),返回NULL。
3. `realloc()`
- 函数原型:`void *realloc(void *ptr, size_t size)`
- 功能:改变已经分配的内存块(由ptr指向)的大小为新的size。
- 返回值:
- 成功调整大小时,返回指向新内存区域的指针(可能与原ptr相同或不同)。
- 若size为0且ptr非NULL,等同于调用free(ptr),返回NULL。
- 若内存调整失败(如内存不足),返回NULL,原内存区域保持不变。
- 细节:如果扩大了内存容量,新增加的空间内容未初始化。
4. `free()`
- 函数原型:`void free(void *ptr)`
- 功能:释放之前通过malloc、calloc或realloc函数分配的内存空间。
- 参数:需要释放的内存区域的指针。
- 注意:释放后,ptr变量应被设为NULL,避免成为“悬挂指针”。
这些函数都定义在头文件 `<stdlib.h>` 中,使用前需要包含此头文件。在程序中,程序员需要负责正确地分配和释放内存,以防止内存泄漏和访问无效内存的问题。