当前位置: 首页 > news >正文

动态开辟内存空间函数

文章目录

  • malloc函数
  • calloc函数
  • malloc函数和calloc函数的不同
  • free函数
  • realloc函数

malloc函数

在这里插入图片描述
在这里插入图片描述
参数是要开辟内存空间的大小
开辟成功则返回值为开辟空间的首地址,若开辟失败则返回一个空指针NULL

calloc函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第一个参数为开辟空间的元素个数,第二个参数为每个元素的大小
开辟成功返回值为开辟空间的首地址,开辟失败返回值为空指针NULL

malloc函数和calloc函数的不同

除了参数不同外开辟后的结果也是不同的,malloc开辟好的空间不会被赋值,calloc开辟好的空间会被赋值

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>int main()
{int* ptr1 = (int*)malloc(10 * sizeof(int));assert(ptr1);int* ptr2 = (int*)calloc(10, 4);assert(ptr2);free(ptr1);free(ptr2);ptr1 = NULL;ptr2 = NULL;return 0;
}

在这里插入图片描述

free函数

在这里插入图片描述
在这里插入图片描述
参数为一个指针,指向的是用malloc,calloc,realloc函数开辟的空间的,如果不是动态开辟空间,结果不确定,标准没有定义。

realloc函数

在这里插入图片描述
在这里插入图片描述
第一个参数为已经动态申请好的空间地址,第二个参数为重新开辟空间的大小,不是再增加这么大的空间大小,而是总共开辟这么大的空间大小。

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>int main()
{int* ptr1 = (int*)malloc(20);assert(ptr1);int* ptr2 = (int*)realloc(ptr1,40);assert(ptr2);free(ptr2);ptr2 = NULL;return 0;
}

**注意:**使用realloc函数时,要用另一个指针来接收,如ptr2。因为有可能在这个地址后的内存空间大小不能满足需要扩容的空间大小,所以有可能重新开辟的空间起始地址与第一次开辟的起始地址不一致。
如果扩容失败则返回空指针NULL

http://www.lryc.cn/news/204980.html

相关文章:

  • nodejs+vue备忘记账系统-计算机毕业设计
  • 百度Comate代码助手SaaS版本:智慧编程,引领新潮
  • 数据与视图的完美契合:Vue响应式的交织魅力
  • Centos8 降低gcc版本至gcc-7.3
  • Qt之设置QLineEdit只能输入浮点数
  • Spark项目实战-卡口流量统计
  • kubernetesr进阶--Secret概述
  • 在 Python 中使用 Pillow 进行图像处理【2/4】
  • XTU-OJ 1171-coins
  • 如何使用 JMeter 进行 HTTPS 请求测试?
  • KNN-水仙花的分类
  • Kotlin 如何确定协程是否启动
  • 【Spring Boot】Spring Boot集成RabbitMQ
  • Hadoop部署过程中问题总结
  • 低成本IC上岸攻略—IC设计网课白嫖篇
  • BootLoader为什么要分阶段?
  • Centos8: 安装python2, 并设置默认版本
  • 【逆向】导入表注入
  • Unity游戏开发中打造游戏攻击技能架构与设计
  • 【微信小程序开发】小程序微信用户授权登录(用户信息手机号)
  • VSCode 自动格式化
  • 数据库、数据仓库相关
  • 【STM32】RCC时钟模块(使用HAL库)
  • WPF中的绑定知识详解(含案例源码分享)
  • 【JVM】类的生命周期
  • asp.net网上商城系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio协同过滤设计
  • APUS入驻百度灵境矩阵,普惠AI大模型插件能力
  • 通过C++调用Com接口
  • 完全背包问题
  • J2EE的N层体系结构