前提
在C语言中,malloc
(内存分配)用于动态分配内存。它是标准库中的一部分,包含在 <stdlib.h>
头文件中。使用 malloc
可以在运行时请求所需的内存空间,而不是在编译时就确定内存大小。
语法
在cplusplus中malloc - C++ Reference
void* malloc(size_t size);
- size: 需要分配的字节数。
- 返回值: 如果分配成功,返回一个指向分配内存的指针;如果失败,返回
NULL
。
注意⚠️事项;
- 检查返回值:是否申请了空间(是否为NULL)。
- 释放内存:用后要用'free'函数释放之前分配的内存,避免空间泄露。
- 大小:n为整数,
n * sizeof(int)
确保分配n
个整数的内存。 - 指针类型:‘void* ’根据自己需要来转换。例子中(int*)
实例
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr;
int n, i;
printf("请输入数组的大小: ");
scanf("%d", &n);
// 使用 malloc 动态分配内存
arr = (int*)malloc(n * sizeof(int));
// 检查内存分配是否成功
if (arr == NULL) {
printf("内存分配失败!\n");
return 1; // 返回非零值表示错误
}
// 输入数组元素
printf("请输入 %d 个整数:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 输出数组元素
printf("您输入的数组是:\n");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 释放分配的内存
free(arr);
return 0;
}
缺点
初始化: malloc
分配的内存不会自动初始化为零。如果需要初始化,可以使用 calloc
函数,或者在使用前手动初始化。
扩展(calloc)
与malloc都一样唯一不同的是它会初始化分配的内存为零
calloc - C++ Reference
- num: 需要分配的元素数量。
- size: 每个元素的大小
共勉 💪💪💪💪
同为未来的it人让我们在共同进步吧。
我很喜欢雷军的一段话:我们就悄悄的干,就算失败了也不丢人。