brk()--重置数据段存储空间函数
来源:互联网 发布:linux sync命令 编辑:程序博客网 时间:2024/06/05 04:48
资料出处:http://book.51cto.com/art/201203/326322.htm
第1章 动态内存管理函数:alloc.h
动态内存管理函数在程序执行过程中为程序中的数据分配内存,这些函数都通过指针来指明内存地址。
最常用的动态内存管理函数是stdlib中的malloc()、calloc()和free(),这组函数在同一数据段中分配内存,当程序中动态分配的内存很多,以至于跨跃数据段分配时,用到本章中的函数,其实用性稍差。
本章程序不能用VC编译,所有程序均在TC 2.0中编译运行。
1.1 brk()--重置数据段存储空间函数
brk()函数
brk()函数用于通过重新设置数据段结束位置,改变数据段存储空间大小。
语法
- int brk(void *endds);
brk()函数的语法参数说明如下:
参数endds为重新设置的数据段结束地址。
brk()函数的返回值:函数成功执行时返回值为0,不成功则为-1。
示例
本示例演示读取文本文件中的所有整数。使用malloc()分配MAX个整数空间,用于保存数据,执行中如果MAX个空间用完而文件中还有未读完的数据,则用brk()函数重新设置数据段存储空间。
程序执行前先在D:\下用记事本建立文件aa.txt,输入1 2 3 4 5 6 7 8(每个数之间用一个空格分开)。其具体代码如下:
运行结果如图1.1所示。 图1.1 brk()函数的
- #include "stdio.h"
- #include "alloc.h"
- #define MAX 500 /*预定义空间,也是每次增加的空间容量*/
- main()
- {
- int *p,n=0,max=MAX; /*max实际已分配的空间*/
- FILE *fp;
- clrscr(); /*清屏*/
- fp=fopen("d:\\aa.txt","r"); /*打开文件*/
- p=(int*)malloc(MAX*sizeof(int)); /*预先分配MAX个整数空间*/
- while(!feof(fp)) /*只要没到文件尾就从文件输入*/
- {
- if(n==max) /*空间用完时,增加数据段大小*/
- {
- maxmax=max+MAX;
- brk(p+max); /*将数据段结束位置定在max+MAX,即增加MAX*/
- }
- fscanf(fp,"%d",&p[n]); /*从文件读一个整数*/
- printf("%d ",p[n]); /*显示这个数*/
- n++; /*实际读出数据个数*/
- }
- fclose(fp); /*关闭文件*/
- free(p); /*释放内存*/
- }
执行结果(文件中只有8个数)
- brk()--重置数据段存储空间函数
- brk, sbrk 函数
- brk和sbrk函数
- sbrk/brk函数用法
- brk和sbrk函数
- sbrk/brk函数的使用
- C程序存储空间布局—各数据段的内存位置
- C程序存储空间布局——各数据段的内存位置
- C程序存储空间布局(一)——各数据段的内存位置
- 获取剩余存储空间函数
- mssql 字增自段怎样重置(重新自增)|清空表已有数据
- mssql 字增自段怎样重置(重新自增)|清空表已有数据
- mssql 字增自段怎样重置 清空表已有数据(重新自增)
- linux sbrk/brk函数使用整理
- sbrk 和brk 函数使用举例
- brk()和sbrk()函数的使用
- Linux sbrk/brk函数使用整理
- linux内存管理函数mmap和brk
- 原生js获取iframe中dom元素--父子页面相互获取对方dom元素
- 质多项式,解题报告
- 数理逻辑:公理化算术(4)演绎定理
- 【转】php获取服务器操作系统等信息
- 领导转型:六个方式帮助你建立好的团队
- brk()--重置数据段存储空间函数
- oracle 误删除数据恢复
- QuickTime文件格式解析
- 软件开发流程
- kinds
- c#开发ActiveX控件及数字证书入门
- s3c2440 裸奔 PWM 分析
- c++ vector的容量增长方式
- cxf调用webservice