brk()—重置数据段存储空间函数
brk()函数用于通过重新设置数据段结束位置,改变数据段存储空间大小。
语法
int brk(void *endds);
- 参数
endds
为重新设置的数据段结束地址。 brk()
函数的返回值:函数成功执行时返回值为0,不成功时为-1。
示例
本示例读取文本文件中的所有的整数。使用malloc分配MAX个整数空间用于保存数据,执行中如果MAX个空间用完,文件中还有未读完的数据,则用brk函数重新设置数据段存储空间。
程序执行前先在D:\下用记事本建立文件aa.txt,输入1 2 3 4 5 6 7 8,每个数之间用一个空格分开。
#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)/*空间用完时,增加数据段大小*/
{
max=max+MAX;
brk(p+max);/*将数据段结束位置定在max+MAX,即增加MAX*/
}
fscanf(fp,"%d",&p[n]);/*从文件读一个整数*/
printf("%d",p[n]);/*显示这个数*/
n++;/*实际读出数据个数*/
}
fclose(fp);/*关闭文件*/
free(p);/*释放内存*/
}
运行结果如图所示:
评论前必须登录!
注册