C语言函数brk()

文章目录

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);/*释放内存*/
}

运行结果如图所示:
C语言brk()

赞(0)

评论 抢沙发

评论前必须登录!