malloc
|
定义于头文件
<stdlib.h>
|
||
|
void
*
malloc
(
size_t
size
)
;
|
||
分配
size
字节的未初始化存储空间。
如果分配成功,返回一个指针,该指针对任何具有 基础对齐 要求的对象类型都适当对齐。
如果
size
为零,
malloc
的行为由实现定义。例如,可能返回空指针。或者,也可能返回非空指针;但此类指针不应被
解引用
,且应传递给
free
以避免内存泄漏。
|
先前调用
free
、
free_sized
和
free_aligned_sized
(C23起)
或
realloc
来释放内存区域的操作,会与分配同一或部分同一内存区域的
|
(C11起) |
目录 |
参数
| size | - | 要分配的字节数 |
返回值
成功时,返回指向新分配内存起始位置的指针。为避免内存泄漏,必须使用 free() 或 realloc() 释放返回的指针。
失败时,返回空指针。
示例
#include <stdio.h> #include <stdlib.h> int main(void) { int *p1 = malloc(4*sizeof(int)); // 分配足够容纳4个整数的数组空间 int *p2 = malloc(sizeof(int[4])); // 相同功能,直接指定类型 int *p3 = malloc(4*sizeof *p3); // 相同功能,无需重复类型名 if(p1) { for(int n=0; n<4; ++n) // 填充数组 p1[n] = n*n; for(int n=0; n<4; ++n) // 打印数组内容 printf("p1[%d] == %d\n", n, p1[n]); } free(p1); free(p2); free(p3); }
输出:
p1[0] == 0 p1[1] == 1 p1[2] == 4 p1[3] == 9
参考文献
- C17 标准 (ISO/IEC 9899:2018):
-
- 7.22.3.4 malloc 函数 (页: 254)
- C11 标准 (ISO/IEC 9899:2011):
-
- 7.22.3.4 malloc 函数 (p: 349)
- C99标准(ISO/IEC 9899:1999):
-
- 7.20.3.3 malloc函数(页码:314)
- C89/C90 标准 (ISO/IEC 9899:1990):
-
- 4.10.3.3 malloc 函数
参见
|
释放先前分配的内存
(函数) |
|
|
C++ 文档
关于
malloc
|
|