动态开辟内存空间函数

文章目录

  • 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.mzph.cn/news/117274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软件教程】如何用C++交叉编译出能在Android运行的ELF程序或so动态库

一、配置NDK交叉编译平台 1. 打开Android的官方ndk下载链接https://developer.android.com/ndk/downloads?hlzh-cn&#xff0c;下载windows 64位ndk环境包。 2. 解压后将具有以下文件的路径加入到系统环境变量。 3. 配置好环境变量&#xff0c;如下图所示&#xff0c;Path中存…

多线程进阶

多线程常见面试题 文章目录 多线程常见面试题1. 常见的锁策略1.1乐观锁&悲观锁1.2 轻量级锁&重量级锁1.3 自旋锁&挂起等待锁1.4 读写锁&普通互斥锁1.5 公平锁&非公平锁1.6可重入锁&不可重入锁 2. CAS3. Sychronized原理3.1 锁升级3.2 锁消除3.3 锁粗化…

支持多校 微信课表小程序源码 排课小程序源码 支持导入课表 情侣课表 背景设置

练手Lab课程表小程序源码是一个基于thinkphp系统进行开发的前后端分离系统。 源码功能介绍 1、情侣功能 2、情侣间留言 3、情侣间互相设置课程表背景 4、自己日、周课程表背景设置 5、教务系统课程表导入 6、导入别人分享的课表 7、导入别人分享的单课 8、多校支持 9…

MySQL - 为什么官方建议使用自增长主键作为索引

性能提升&#xff1a;自增长主键通常是整数类型&#xff0c;它们在数据库中的存储和索引效率非常高。这使得查询、插入和更新操作更加高效&#xff0c;特别是在大型数据表中。整数类型的比较和排序速度通常更快。减小索引尺寸&#xff1a;自增长主键的值按顺序递增&#xff0c;…

页面html结构导出为word或pdf

一、使用场景和原理 需要将当前页面(一般详情页面)或者dom容器中的内容保存/截图&#xff0c;并且导出为word或者pdf 导出word:获取dom结构直接转化为word导出 导出pdf:用canvas生成当前页面或者dom范围的快照&#xff0c;参考截图功能&#xff0c;然后将生成的canvas转为pdf内…

BootLoader为什么要分阶段?

BootLoader&#xff08;引导加载程序&#xff09;分阶段的设计主要是为了实现系统的启动和引导过程的可靠性、可维护性和灵活性。这种分阶段的设计允许引导加载程序执行不同的任务&#xff0c;并在不同的环境下工作。以下是引导加载程序分阶段的主要原因&#xff1a; 1. 启动环…

面试题收集——Java基础部分(一)

1、一个".java"源文件中是否可以包括多个类&#xff08;不是内部类&#xff09;&#xff1f;有什么限制&#xff1f;   可以有多个类&#xff0c;但只能有一个public的类&#xff0c;并且public的类名必须与文件名相一致。 2、Java有没有goto?   java中的保留字…

【c#】关于web api发布

c#关于web api发布 发布方式区别和原理发布步骤1、文件夹发布2、WEB服务器发布3、详细Web Deploy部署1、在IIS服务器上安装WebDeploy2、添加Web管理工具3、运行下面2个服务4、打开IIS管理界面,添加网站,添加完成后不要运行网站,因为现在还没有网站文件。5、在添加的网站上右…

MySQL - 对字符串字段创建索引

在数据库中&#xff0c;对字符串字段创建索引可以加速字符串字段的查询&#xff1a; 直接创建完整索引&#xff1a;这是最简单的方式&#xff0c;直接对整个字符串字段创建索引。这种方式占用的空间较大&#xff0c;但查询性能通常较好&#xff0c;特别是在精确匹配的情况下。…

docker容器怎么设置开机启动

docker容器怎么设置开机启动 docker服务器、以及容器设置自动启动 回到顶部 一、docker服务设置自动启动 说明&#xff1a;适用于yum安装的各种服务 查看已启动的服务 systemctl list-units --typeservice 查看是否设置开机启动 systemctl list-unit-files | grep enable 设…

AIR101 LuatOS LVGL 显示多个标签例程

屏幕资料 AIR101与屏幕连接 PC端仿真环境合宙官方PC端版本环境搭建教程 PC电脑仿真 -- sys库是标配 _G.sys require("sys") sys.taskInit(function()local cnt0lvgl.init(480,320)--lvgl初始化local cont lvgl.cont_create(nil, nil);-- lvgl.cont_set_fit(cont, …

MFC Windows 程序设计[332]之十进制转十六进制编辑框(附源码)

MFC Windows 程序设计[332]之十进制转十六进制编辑框 程序之美前言主体运行效果核心代码逻辑分析结束语程序之美 前言 MFC是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包…

Centos8 降低gcc版本至gcc-7.3

1 首先卸载系统中的gcc sudo yum remove gcc 2 重新安装gcc-7.3 sudo dnf group install “Development Tools” 然后再次卸载gcc sudo yum remove gcc 然后发现centos-release-scl-rh已经安装了 sudo yum install centos-release-scl-rh yum -y install devtoolset-7-gcc dev…

跨界技术:SOCKS5代理在电商、爬虫与游戏领域的应用

随着技术的日益发展&#xff0c;各种工具和技术手段被广泛应用于不同的领域。其中&#xff0c;SOCKS5代理、跨界电商、爬虫技术、出海策略以及游戏产业都成为了当下最热门的话题。本文将探讨这些关键技术如何相互融合&#xff0c;为企业和个人带来更多的机会和挑战。 1. SOCKS…

spring中基础核心接口总结

理解这几个接口&#xff0c;及其实现类就可以快速了解spring,具体的用法参考其他spring资料 1.BeanFactory最基础最核心的接口 重要的实现类有&#xff1a;XmlBeanFactory,以及ApplicationContext接口下的类 2.Resource接口,可以通用地访问文件资源 1)ClassPathResource:读取…

不希望你的数据在云中?关闭iPhone或Mac上的iCloud

​如果你不想使用iCloud&#xff0c;可以很容易地从设备设置中选择退出并关闭它。当你禁用iCloud时&#xff0c;它会删除该设备对iCloud的访问&#xff0c;但不会删除苹果服务器上的任何数据。我们将在本文末尾向你展示如何做到这一点。 注销iCloud并完全禁用它 如果你根本不…

Selenium自动访问Firefox和Chrome并实现搜索截图

一. Selenium自动登录 代码如下所示: from selenium import webdriver from selenium.webdriver.common.keys import Keys import time #模拟登陆163邮箱 driver = webdriver.Firefox() driver.get("http://mail.163.com/") #用户名 密码 elem_user = …

HDR图像处理软件 Photomatix Pro mac中文版新增功能

Photomatix Pro mac是一款专业的HDR合成软件&#xff0c;可以将不同曝光的多张照片合成为一张照片&#xff0c;而保留更多的细节。并且合成时可以帮助去除照片中的鬼影。Photomatix Pro提供两种类型的过程来增加动态范围&#xff0c;一个过程称为HDR色调映射&#xff0c;另一个…

hive字段关键字问题处理

最近在xxl_job部署shell调度任务时,发现在编写Hql时&#xff0c;对一些使用关键字命名的字段无法解析&#xff0c;按开发规范&#xff0c;字段命名不应该有关键字,但是数据来源是第三方,无法修改,需要通过flume对从kafka的数据到hdfs上&#xff0c;数据是json格式,所以需要对关…

Python 文本语种检测模型:cld2-cffi

Python 文本语种检测模型&#xff1a;cld2-cffi 安装 &#xff1a;pip install cld2-cffi 代码 import cld2t [A accs aux chiens et aux frontaux qui lui ont t il peut consulter et modifier ses collections et exporter Cet article concerne le pays europen aujour…