realloc函_realloc(重新分配内存空间的函数)

在头文件中定义void * realloc(void * ptr,size_t new_size);

重新分配给定的内存区域。它必须预先分配malloc(),calloc()或realloc()尚未释放与free或呼叫realloc。否则,结果是不确定的。

重新分配由以下两者之一完成:

a)ptr如有可能,扩大或缩小指定的现有地区。该地区的内容保持不变,直至新旧尺寸中的较小者。如果区域展开,则数组新部分的内容未定义。

b)分配一个大小为new_size字节的新内存块,复制大小等于新旧大小较小者的内存区域,并释放旧块。

如果没有足够的内存,则旧的内存块不会被释放,并返回空指针。

如果ptr是NULL,则行为与调用malloc(new_size)相同。

如果new_size为零,则行为是实现定义的(可能会返回空指针(在这种情况下,可能会释放或不释放旧的内存块),或者可能会返回一些可能不用于访问存储的非空指针)。

realloc是线程安全的:它的行为就像访问通过其参数可见的内存位置,而不是任何静态存储。先前调用free或realloc来释放内存区域的同步 - 调用任何分配函数,包括分配相同或部分同一区域内存的realloc。在通过释放函数访问内存之后以及在通过重新分配访问内存之前,会发生此同步。所有分配和解除分配功能在内存的每个特定区域都有一个总的顺序。(自C11以来)

参数

PTR-指向要重新分配的内存区域的指针new_size-数组的新大小

返回值

成功时,将指针返回到新分配的内存的开始位置。返回的指针必须用free()或来解除分配realloc()。原始指针ptr无效,并且对它的任何访问都是未定义的行为(即使重新分配就地)。

失败时,返回一个空指针。原始指针ptr仍然有效,可能需要使用free()or 取消分配realloc()。

注释

从C11 DR 400开始不支持零大小。

最初(在C89中),增加了对零大小的支持以适应如下代码。

OBJ *p = calloc(0, sizeof(OBJ)); // "zero-length" placeholder...while(1) {

p = realloc(p, c * sizeof(OBJ)); // reallocations until size settles    ... // code that may change c or break out of loop}

#include #include 

int main(void){

int *pa = malloc(10 * sizeof *pa); // allocate an array of 10 int    if(pa) {        printf("%zu bytes allocated. Storing ints: ", 10*sizeof(int));        for(int n = 0; n 

int *pb = realloc(pa, 1000000 * sizeof *pb); // reallocate array to a larger size    if(pb) {        printf("\n%zu bytes allocated, first 10 ints are: ", 1000000*sizeof(int));        for(int n = 0; n 

输出:

40 bytes allocated. Storing ints: 0 1 2 3 4 5 6 7 8 94000000 bytes allocated, first 10 ints are: 0 1 2 3 4 5 6 7 8 9

参考

C11标准(ISO / IEC 9899:2011):7.22.3.5 realloc函数(p:349)

C99标准(ISO / IEC 9899:1999):7.20.3.4 realloc函数(p:314)

C89 / C90标准(ISO / IEC 9899:1990):4.10.3.4 realloc函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529079.shtml

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

相关文章

python做excel表格教程视频_基于Python实现excel表格读写

首先安装对应的xlrd和xlwt 打开cmd命令窗口输入pip install xlrd和pip install xlwt就可以安装。之后输入pip list检查是否成功配置:xlrd操作# 接下来就是常用的语法操作: excel_data xlrd.open_workbook(文件路径)#得到对应的工作表 sheet excel_data…

虚无鸿蒙哪个厉害,【图说鸿蒙】鸿蒙设定之七柱神(五)

原标题:【图说鸿蒙】鸿蒙设定之七柱神(五)七柱神玄冥神飞来流去本无心,无空无我混天尘。幻作人形深简出,不是老妪是海神。玄冥神 虚无荒海司掌海洋、流动之力 神威之色为蓝执掌海洋、流动之力的神,是神道“熵”的最高掌控者&#…

java lambda 排序_Java8特性:Lambda表达式之概念篇

Java自诞生已经有十几个年头了,目前也已经发布了第十三个大版本,其中Java8是常用的版本中最新的一个版本。而Java8最大的特性就是:Lambda表达式、函数式接口和Stream流。本篇我只介绍Lamda表达式的概念以及简单使用,至于别的我打算…

jq获取表格里的checkbox_Python抓取网页表格(一)

Python有很多包可以抓取数据,如selenium、requests、scrapy、pandas,每个包都有其适用性,个人认为在抓取数据时,代码简洁性和数据获取的准确性是需要考虑的因素,时间快慢倒不用太在意,毕竟用python抓数据本…

html一个空格多少像素,一个空格占几个字符?

一个空格通常占2个字符,但有些特殊情况占用3个字符。在程序中,空格占用的字符数取决于程序使用的字符集,如:1、使用多字节字符集时,半角空格占用1个字节,全角空格占用2个字节。2、使用Unicode字符集时&…

各种抠图动态图片_不用手。自动、智能抠图,图片去背景

BgEraser 是一款基于 AI 的自动、智能图片去背景工具,无需勾选可用、可删除区域,上传图片,立即下载即扣图完成的图片。AppinnBgEraser 真是懒人的福音。在此之前,比如很好用的在线去背景服务 remove.bg,是需要用户手动…

html用dom显示xml,html DOM文件引用一个XML文件将不会在浏览器中打印

我完全不熟悉这一点,我正在上课,现在变成了一个令人头疼的问题。我有这个HTML DOM文件,它引用了一个XML文件,我需要在浏览器中显示在屏幕上。它应该只打印标题,标题,第一个,最后一个&#xff0c…

bigdecimal 保留两位小数_Python的保留小数及对齐

Python的保留小数:方法1:用round函数(有坑)。median 12.3004886print(round(median, 2)) # 保留两位小数print(round(median, 3)) # 保留三位小数print(round(median, 4)) # 保留四位小数运行结果:12.312.312.3005可以看出Python中的r…

分布式光伏补贴_四川:2020年起工商业分布式光伏已无补贴

来源:四川省发改委日前,四川省发改委发布《四川省分布式光伏建设管理相关政策》,对该省分布式光伏发电项目定义、分类、备案程序、需要国补的项目相关政策进行了梳理。值得注意的是,文件明确,自2020年起,四…

用计算机玩游戏最简单的方法,如何制作电脑简易命令小游戏

满意答案sylvia10172019.01.20采纳率:48% 等级:7已帮助:460人简单的Dos小游戏开始学习java,这周只简单的学习了C的基本语法:输入输出,判断循环,因此用这些东西在java上瞎写了一个DOS小游戏。…

pandas filter_数据分析之Pandas操作(2)

接着数据分析之Pandas操作(1)的介绍,本次介绍在实际应用场景中几个常用的函数。还是以titanic生存数据为例,本次需要导入pandas 、numpy 、scipy三个工具包。import pandas as pdimport numpy as npfrom scipy.stats import zscoretrain_data pd.read_c…

ios 隐藏app的插件_等了5年终于复活,iPhone上最干净好用的微博App

来,先跟小虎妞一起回忆下2013年的微博客户端。(图源水印)那时候,首页还是按时间顺序来的,也没有赴美产子、老爷夫人知道错了的广告。后来,随着微博一次次改版,客户端越来越臃肿,第三方微博客户端像雨后春笋…

html高度为零,html中父div高度为0的原因

问题:在chrome中看到父div高度为0,但里面明明有内容。原因:简单的讲原因就是子元素如果设了float属性,这些子元素就脱离了父div容器的控制,所以父容器认为里面没内容,高度自然变成了0.解决办法:…

算法训练营Day23

#Java #回溯 #组合问题 开源学习资料 Feeling and experiences: 组合总和III:力扣题目链接 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。…

matlab调用python_从MATLAB调用Python函数

尝试使用此MEX文件从MATLAB实际调用Python,而不是像其他人建议的那样。它提供了相当不错的集成:http : //algoholic.eu/matpy/ 您可以轻松地执行以下操作: [X,Y]meshgrid(-10:0.1:10,-10:0.1:10); Zsin(X)cos(Y); py_export(X,Y,Z) stmt spr…

macbook配置java环境变量_配置mac上Java环境变量

从ubuntu上转到mac上来做开发,一切配置都要重新开始1. 下载jrehttp://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html选择合适的版本和安装包2. 一键安装3. 查看是否安装成功scarlettdeMacBook-Air:~ scarlettxu$ java -versionjava vers…

地图 插件 html 经纬度,如何往地图位置(经纬度)选择插件页面传递经纬度

查看了一下代码,发现了解决办法;在edit.html中:{:__(Longitude)}:{:__(Latitude)}:在对应的js代码中:edit: function () {$("[data-toggleaddresspicker]").data("lat-id",c-latitude);$("[data-togglea…

python调用node_在node中执行python脚本

Node.js多进程基础 Node.js 是以单线程的模式运行的,但它使用的是事件驱动来处理并发。这样有助于我们在多核 cpu 的系统上创建多个子进程,从而提高性能。 每个子进程总是带有三个流对象:child.stdin, child.stdout 和child.stderr。他们可能…

idea 自动生成mybaits_IDEA利用mybatis-generator自动生成dao和mapper

pom.xml配置1 2 1.83 1.3.74 5.1.465 1.1.96 1.3.27 89 10 11 org.springframework.boot12 spring-boot-starter-web13 1415 16 org.springframework.boot17 spring-boot-starter-test18 test19 20 21 org.junit.vintage22 junit-vintage-engine23 24 25 26 27 28 org.mybatis.…

计算机专业个人工作总结,年底个人工作总结计算机专业材料

《年底个人工作总结计算机专业材料.doc》由会员分享,可免费在线阅读全文,更多与《年底个人工作总结计算机专业材料》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、定的进步,但我深知自己还存在些缺点和不足,理论基础还不扎实,业务知识…