C语言动态内存分配 #
一、malloc函数 #
1.1 函数原型 #
c
void* malloc(size_t size);
1.2 使用示例 #
c
#include <stdio.h>
#include <stdlib.h>
int main() {
int* p = (int*)malloc(sizeof(int) * 5);
if (p == NULL) {
printf("分配失败\n");
return 1;
}
for (int i = 0; i < 5; i++) {
p[i] = i + 1;
}
for (int i = 0; i < 5; i++) {
printf("%d ", p[i]);
}
printf("\n");
free(p);
p = NULL;
return 0;
}
二、calloc函数 #
2.1 函数原型 #
c
void* calloc(size_t num, size_t size);
2.2 使用示例 #
c
#include <stdio.h>
#include <stdlib.h>
int main() {
int* p = (int*)calloc(5, sizeof(int));
if (p == NULL) {
return 1;
}
for (int i = 0; i < 5; i++) {
printf("%d ", p[i]);
}
printf("\n");
free(p);
return 0;
}
calloc会自动初始化为0。
三、realloc函数 #
3.1 函数原型 #
c
void* realloc(void* ptr, size_t size);
3.2 使用示例 #
c
#include <stdio.h>
#include <stdlib.h>
int main() {
int* p = (int*)malloc(5 * sizeof(int));
p = (int*)realloc(p, 10 * sizeof(int));
if (p == NULL) {
return 1;
}
free(p);
return 0;
}
四、free函数 #
4.1 使用要点 #
c
free(p);
p = NULL;
- 释放后置NULL
- 避免重复释放
- 避免内存泄漏
五、总结 #
| 函数 | 功能 |
|---|---|
| malloc | 分配内存 |
| calloc | 分配并清零 |
| realloc | 调整大小 |
| free | 释放内存 |
下一步,让我们学习内存泄漏!
最后更新:2026-03-26