静态数组分配

时间:2015-09-23 20:22:12

标签: c memory static allocation

我有alloc的这个实现,它将内存分配为动态数组。

我的问题是,数组和指针被声明为静态是什么意思?它如何影响调用alloc的函数?

#define ALLOCSIZE 10000 /* size of available space */

static char allocbuf[ALLOCSIZE];   /* storage for alloc */
static char *allocp = allocbuf;    /* next free position */

char *alloc(int n)   /* return pointer to n characters */
{

    if (allocbuf + ALLOCSIZE - allocp >= n) {  /* it fits */
        allocp += n;
        return allocp - n; /* old p */
    }  else               /* not enough room */
        return 0;
}

1 个答案:

答案 0 :(得分:1)

  

我的问题是,数组和指针被声明为静态是什么意思?

这意味着数组的生命周期是程序的整个执行。在文件范围定义的任何对象(带或不带static说明符)都具有静态存储持续时间(例外:使用C11 _Thread_local说明符定义的对象)。添加static说明符会限制对象对它们所定义的源文件的可见性。

alloc分配的总大小受allocbuf数组大小的限制。