C语言增量内存申请 realloc

void* realloc (void* ptr, size_t size);
Reallocate memory block

Changes the size of the memory block pointed to by ptr.
The function may move the memory block to a new location (whose address is returned by the function).

The content of the memory block is preserved up to the lesser of the new and old sizes, even if the block is moved to a new location. If the new size is larger, the value of the newly allocated portion is indeterminate.

【如果申请长度小于原来长度,原来内容被截断;等于则内容不变,如果申请长度大于原来长度,多出部分的内存,其内容是不确定的,原来内容不变】

【但不管哪种情况,内存地址都可能改变,相等情况下可能不变】

In case that ptr is a null pointer, the function behaves like malloc, assigning a new block of size bytes and returning a pointer to its beginning.

【如果ptr是空,则此时函数相当于malloc的功能】

代码如下:

 1 /* realloc example: rememb-o-matic */
 2 #include <stdio.h>      /* printf, scanf, puts */
 3 #include <stdlib.h>     /* realloc, free, exit, NULL */
 4
 5 int main ()
 6 {
 7   int input,n;
 8   int count = 0;
 9   int* numbers = NULL;
10   int* more_numbers = NULL;
11
12   do {
13      printf ("Enter an integer value (0 to end): ");
14      scanf ("%d", &input);
15      count++;
16
17      more_numbers = (int*) realloc (numbers, count * sizeof(int));
18
19      if (more_numbers!=NULL) {
20        numbers=more_numbers;
21        numbers[count-1]=input;
22      }
23      else {
24        free (numbers);
25        puts ("Error (re)allocating memory");
26        exit (1);
27      }
28   } while (input!=0);
29
30   printf ("Numbers entered: ");
31   for (n=0;n<count;n++) printf ("%d ",numbers[n]);
32   free (numbers);
33
34   return 0;

View Code

posted on 2018-02-09 18:01 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

C语言增量内存申请 realloc相关推荐

  1. C语言中内存申请函数

    在数据结构C中线性表的顺序存储和数组很类似,用一块连续的内存来存储数据,C中有动态申请内存函数malloc,这个函数前后都要参数,从下面程序中就能看到,首先要在前面用(类型 *)的格式来指明它指向的类 ...

  2. c语言增加动态分配的存储空间吗,C语言 关于内存动态分配问题

    全局变量:分配到 内存的静态区. 局部变量(非静态):分配到 内存的动态区.在存储区中称为栈(stack) 临时数据(C允许内存动态分配区域):存放在自由空间区,称为堆区(heap) 内存动态分配 得 ...

  3. c语言十七:动态内存申请

    动态内存申请 一 动态内存申请 二 静态分配内存和动态分配内存 2.1 静态分配内存 2.2 动态分配内存 三 动态内存申请的相关函数 3.1 分配内存空间函数 malloc 3.2 free函数 ( ...

  4. C语言-动态内存管理(malloc()、calloc()、realloc()、free())

    C语言 动态内存分配 文章目录 C语言 动态内存分配 前言 一.为什么存在动态内存分配? 二.动态内存函数的介绍 1.初识malloc()和free() 2.malloc()和free()的简单使用 ...

  5. c语言动态的申请矩阵存储空间,C语言中二维数组如何申请动态分配内存

    C语言中二维数组如何申请动态分配内存: 使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小 #include #include int main() { int **a; int i ...

  6. c语言清理内存程序,C语言中 内存的申请与释放

    内存的申请与释放 对于一段内存的数存,该如何解释,是依赖于数据类型,需要使用 malloc,其使用语法如下: void * malloc(size_t size); 函数 malloc 包含在头文件为 ...

  7. C语言动态内存相关函数

    C语言动态内存管理函数有4个,分别为malloc,realloc,calloc和free.malloc函数分配一块堆内存:calloc是malloc的变种,功能相同,有细小的差别:realloc修改原 ...

  8. c语言的内存管理方式,c语言内存管理

    2017-08-23 作用域 一个C语言变量的作用域可以是代码块 作用域,函数作用域或者文件作用域.代码块是{}之间的一段代码. auto 自动变量 一般情况下代码块内部定义的变量都是自动变量.当然也 ...

  9. 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

最新文章

  1. JPA不同包下同类名查询出错
  2. linux命令see的用法,Linux一些基本命令与用法
  3. 算法 - 快速排序(C#)
  4. 属于哪种虚拟化类型_经络淤堵,疲乏无力?有3种疲劳类型,你属于哪种,快来自测一下...
  5. web项目获取运行时...\WEB-INF\classes目录下文件
  6. Ansible自动化运维工具介绍
  7. How can ifm help the SME WELL?
  8. Linux高级篇——IO系统编程
  9. Why Open vSwitch?
  10. MySql的架构和历史
  11. python 变量命名空间_Python命名空间– Python变量范围
  12. python os.open禁止写入缓存区_Python-设置文件缓冲类型
  13. 极品五笔在非管理员权限下无法使用的问题
  14. egret引擎生命周期相关
  15. 4424: Cf19E Fairy
  16. 怎样让照片变得更清晰,这几个方法真的好用!
  17. webstorm热更新
  18. Eclipse中出现“polling news feeds”的解决办法
  19. Vue过滤器的介绍和使用
  20. 法国出售给阿联酋的卫星可能含有后门组件

热门文章

  1. 笔记-项目立项管理-项目建议书
  2. 整理了十个Python自动化操作
  3. Android中怎样在项目中引入别的项目中正使用的library
  4. PostMan怎样携带登录信息请求后台接口防止出现无法访问资源问题
  5. Winform中自定义ZedGraph右键复制成功后的提示
  6. 系统架构设计师考试知识点整理-4:死锁问题、银行家算法、管程与线程
  7. SSM查看详情功能逻辑代码以及关联码表显示
  8. win7 php mysql扩展名_win7下MySQL 5.1.73安装过程(图解)并在php.ini中启用相关扩展。...
  9. 神策数据王琛:用户画像实践之神策标签生产引擎架构
  10. 神策 FM:做一名数据分析师是什么体验?