繁体   English   中英

在c中使用数组进行LIFO内存分配的目的是什么?

[英]What is the purpose of LIFO memory allocation with an array in c?

 #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;
 }

 void afree(char *p) /* free storage pointed to by p */
 {
     if (p >= allocbuf && p < allocbuf + ALLOCSIZE)
         allocp = p;
 }

到目前为止,我了解的是内存分配的目的是保持程序高效。 声明数组allocbuf会占用所有空间并破坏目的吗? 我衷心感谢任何回答。

这些函数用作数组分配器,但是它们代替使用新的内存,而是使用和重用了这个大的allocbuf,它位于静态段中,不需要常规分配。

这是LIFO,因为afree()仅释放了最后分配的存储,但这需要在指定与最新分配的存储相对应的p与客户端代码合作。

关于您的问题,从程序的静态段进行分配比使用new更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM