目录
malloc函数的功能
学习malloc函数编辑
使用malloc函数
free函数的功能
学习并使用free函数编辑
malloc动态开辟10个整型空间后赋值为0-9,再打印,打印后free
malloc函数的功能
malloc函数能向内存申请一块连续可用的空间,并返回指向这块空间的指针
- 开辟成功时:返回一个指向这块空间的指针
- 开辟失败时:返回NULL,所以malloc的返回值一定要做检查,不用空时再使用
学习malloc函数
函数的参数:
size_t size:需要开辟空间的大小,单位是字节
函数的返回值:
void*: 返回值的类型是void* ,所以malloc函数并不知道开辟空间的类型,具体再使用的时候是使用者自己强制类型转换
使用malloc函数
代码演示:
// 以数组的形式创建10个整型变量
int arr[10];
// 动态开辟10个整型变量
int* parr = (int*)malloc(sizeof(int) * 10);
free函数的功能
当程序退出时,动态开辟的空间就会销毁(还给操作系统)
当程序不退出时,动态申请的内存,不会主动释放的,需要用free函数来释放
学习并使用free函数
函数的参数:
void* ptr:需要传递动态开辟空间的起始位置的指针
注意:
free函数并不会主动将指针置空,需要交给free函数释放后,使用者自己置空
代码演示:
// 动态开辟10个整型变量
int* parr = (int*)malloc(sizeof(int) * 10);
// 释放
free(parr);
// 置空
parr = NULL;
malloc动态开辟10个整型空间后赋值为0-9,再打印,打印后free
代码演示:
#include<stdio.h>
#include<stdlib.h>
int main()
{
// 动态开辟10个整型变量
int* parr = (int*)malloc(sizeof(int) * 10);
// 判断释放开辟成功
if (parr == NULL)
{
perror("malloc");
return -1;
}
// 赋值
for (int i = 0; i < 10; i++)
{
*(parr + i) = i;
}
// 打印
for (int i = 0; i < 10; i++)
{
printf("%d ", *(parr + i));
}
// 释放
free(parr);
// 置空
parr = NULL;
return 0;
}