本文主要是介绍C语言 ——— 学习并使用malloc和free函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
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;
}
这篇关于C语言 ——— 学习并使用malloc和free函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!