C语言中的Malloc和free用法-----带案例
写在前面:
Malloc是程序员手动去开辟的空间,这个空间存放在堆区
Malloc
使用Malloc所要添加的头文件:
#include <stdlib.h>
Malloc的使用格式
void *malloc(size_t size)
作用:在堆区申请一片空间
返回值:成功返回申请空间的首地址,失败返回NULL
参数:想要申请多大的空间用sizeof计算
free
Void * 是空指针,空指针是存在的,但是void类型的变量是不存在的。空指针也叫万能指针。
free的使用格式
void free(void *ptr)
作用:释放申请到的空间
参数:申请空间的首地址
memset
使用memset要添加的头文件
#include <string.h>
memset的使用格式
void *memset(void *s, int c, size_t n)
作用:清空申请到的空间
参数1:申请到空间的首地址
参数2:用什么数据去清空
参数3:清空多大的空间
使用方法案例
申请一个动态数组
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int i = 0;
int n = 0;
printf("输入想要空间的大小:");
scanf("%d", &n);
int * arr = (int *)malloc(sizeof(arr) * n);
if (NULL == arr)
{
printf("MALLOC ERROR\n");
return -1;
}
memset(arr, 0, sizeof(arr) * n);
printf("请输入数字:\n");
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
printf("输出结果:");
for (i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
代码运行结果:
我与不学习不共存: 可以分享我下软件吗
我与不学习不共存: 能不能麻烦再分享一下,提取码不正确
stoney Nvlee: 太有用了,一次解决,狠狠点赞了
苏州华启: 太稳了,还是这个好使啊。什么VM install cleaner 对我无用
扣1005611送地狱火: 我找不到它安装地址啊,我没有他这个文件夹啊,请问你是怎么找到的?