<assert.h>
<errno.h>
<setjmp.h>
<stdarg.h>
C动态内存分配是在C语言中为了实现动态内存分配而进行的手动内存管理。这种管理是通过C標準函式庫中的malloc、realloc、calloc、free 等函数进行的。[1][2]
malloc
realloc
calloc
free
C++ 为了兼容 C 语言也提供这些函数,但是更推荐使用 new、delete 操作符来完成类似的操作。[3]
new
delete
malloc 所实际使用的内存分配机制有很多不同的实现,执行时间和内存消耗各有不同。
C 动态内存分配函数在头文件 stdlib.h 中声明(C++ 中对应的头文件名称为 cstdlib)。[1]
stdlib.h
cstdlib
malloc 所执行的内存分配基于字节数而不是类型,其返回类型为 void 指针(void *),表示该指针所指向区域的数据类型未知。C++ 由于其强类型系统,实际使用该指针时需要进行强制类型转换,而 C 语言中则不必进行。
void *
int * ptr; ptr = malloc(10 * sizeof(int)); /* 不进行强制类型转换 */ ptr = (int *)malloc(10 * sizeof(int)); /* 进行强制类型转换 */