realloc 用过很多次了。无非就是将已经存在的一块内存扩大。

char* p = malloc(1024);

char* q = realloc(p,2048);

现在的问题是我们应该如何处理指针 p。 刚开始按照我最直观的理解,如果就是直接将 p = NULL;。 到最后只需要释放 q的空间就可以了。

因为最近在做个封装。结果在做单元测试的时候发现。有时候我在 free(q); 的时候会出错。这样我就郁闷了。

后来仔细一跟踪,发现 realloc 完以后 q 和 p 的指针地址是一样。不过有时候又不一样。

仔细查了下资料。得到如下信息:

1.如果 当前连续内存块足够 realloc 的话,只是将p所指向的空间扩大,并返回p的指针地址。 这个时候 q 和 p 指向的地址是一样的。

2.如果 当前连续内存块不够长度,再找一个足够长的地方,分配一块新的内存,q,并将 p指向的内容 copy到 q,返回 q。并将p所指向的内存空间删除。

这样也就是说 realloc 有时候会产生一个新的内存地址 有的时候不会。所以在分配完成后。我们需要判断下 p 是否等于 q。并做相应的处理。

这里有点要注意的是要避免 p = realloc(p,2048); 这种写法。有可能会造成 realloc 分配失败后,p原先所指向的内存地址丢失。

realloc函_realloc函数用法相关推荐

  1. realloc函_realloc 函数的用法 以及 误区

    realloc 原型:extern void *realloc(void *mem_address, unsigned int newsize); 用法:#include 有些编译器须要#includ ...

  2. realloc函_realloc函数使用规则

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. realloc函数使用规则如下: 1.realloc失败的时候,返回NULL: 2.realloc失败的时候,原来的内存不改变,不 ...

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

    在头文件中定义void * realloc(void * ptr,size_t new_size); 重新分配给定的内存区域.它必须预先分配malloc(),calloc()或realloc()尚未释 ...

  4. realloc函数用法解释

    realloc函数是将数组扩容的一个函数 用法:指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小). 具体工作方法: 假设有一个p指针指向一个数组空间,如下图所示 想在想要使这个 ...

  5. php中 param,php中bind_param()函数用法分析

    本文实例讲述了php中bind_param()函数用法.分享给大家供大家参考,具体如下: 从字面上不难理解,绑定的参数:下面我通过一个绑定参数的例子讲一下: for example: bind_par ...

  6. python中的get函数_python之函数用法get()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法get() #http://www.runoob.com/python/att-dic ...

  7. c语言字符串strchr,C语言 strchr 函数用法

    C语言 strchr 函数用法 C语言中strchr函数作用是为在一个串中查找给定字符的第一个匹配之处,该函的原型为"char *strchr(const char *str, int c) ...

  8. c语言count函数的用法,java count函数用法

    java count函数用法 [2021-02-11 06:55:28]  简介: 在excel中count函数的功能是:计算数字的个数,对给定数据集合或者单元格区域中数据的个数进行计数.COUNT函 ...

  9. strstr函数php,strstr 函数用法

    strstr strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串.如果是,则该函数返回str2在str1中首次出现的地址:否则,返回NULL. C语言函数 函数名: s ...

最新文章

  1. 延时函数介绍和呼吸灯的实现
  2. PowerPoint2010 中停止使用和修改的功能
  3. go mysql 查询数据_MySQL常用语句之查询数据-Go语言中文社区
  4. ubuntu16.04版本 the system is running in low-graphics mode
  5. 用python玩转数据第四周答案_用Python玩转数据_章节答案
  6. 点云插值:三维平面参数确定-不共线三点的平面方程
  7. 【Azure Show】|第三期 人工智能大咖与您分享!嘉宾陈海平胡浩陈堰平
  8. 使用反应流作为Drools的数据源
  9. SaaS窘境[欣赏然后翻译之]
  10. 除了ssh外也可以开启telnet服务连接服务器
  11. Spring data JPA方法命名规则
  12. 确定填充介质的矩形波导单模传输TE10波的工作频率
  13. 关于SPSS软件的使用
  14. tensorflow的pb文件转化为pbtxt
  15. Java Web学习网站
  16. 物联网应用网站数据库设计
  17. 80老翁谈人生(40):加快步伐,坚定信念,继续前行
  18. 云服务器系统镜像选什么,云服务器系统镜像选什么用
  19. 公众号如何向用户发送重要的服务通知?
  20. 综合各代码在线运行 jsrun

热门文章

  1. p-中位模型与pareto解集
  2. mysql五日均线_五日均线战法图解,简单实用,一跟均线闯天下
  3. 高龄白菜java学习第八十九天(java数据结构和算法(10))
  4. 小程序源码:多功能图片处理器
  5. GDB基础:MacOS上的GDB安装与设定
  6. 【软件安全】缓冲区溢出攻击(stack overflow)实践
  7. vue 中使用 Windi CSSS 样式库
  8. js数组求和、最大、最小值
  9. 循环神经网络(RNN)简易教程
  10. script标签charset属性