alloc 函数

函数alloc是可返回一个指向n个连续字符存储单元的指针,alloc函数的调用者可以利用该指针存储字符序列。

#define ALLOCSIZE 1000 /* 可用空间大小 */

static char allocbuf[ALLOCSIZE] /* alloc使用的存储区 */

static char * allocp=allocbuf; /* 下一个空闲位置 */

char *alloc(int n) /* 返回指向n个字符的指针 */

{

if(allocbuf+ALLOCSIZE-allocp>=n) /* 有足够的空闲空间 */

{

allocp+=n;

return allocp-n; /* 分配前的指针p */

}

else /* 空闲空间不够 */

{

return 0;

}

}

void afree(char * p) /* 释放p指向的存储区 */

{

if(p>=allocbuf && p< allocbuf + ALLOCSIZE)

allocp=p;

}

时间: 2024-08-15 08:27:17

alloc 函数的相关文章

malloc、calloc、realloc、new以及alloca函数区别

malloc.calloc.realloc.new以及alloca函数 一.综合叙述 1) malloc 函数: void *malloc(unsigned int size) 在内存的动态分配区域中分配一个长度为size的连续空间,如果分配成功,则返回所分配内存空间的首地址,否则返回NULL,申请的内存不会进行初始化. 2)calloc 函数: void *calloc(unsigned int num, unsigned int size) 按照所给的数据个数和数据类型所占字节数,分配一个

rosalloc

1.            关键数据结构 i.            FreePageRun 描述将要用来分配的地址空间(逻辑地址空间,下同). ii.            Run 相同大小的slot的集合. iii.            Slot 内存分配单位. 对于run的大小可分为34个标准(bracketSizes):标号0-31的,大小为16*(i+1)个字节,其中i为标号值,32大小为1kB,33为2kB. 不同标号的run所用page数目也不一样(numOfPages):0-3

IOS总结(学习过程中整理的笔记)

MVC模式:(model+view+controller):是一种帮你把代码功能和显示划分出来的设计模式: model:较为底层的数据引擎,负责管理实体中所继承的数据: view:和用户交互界面: controller:连接二者的桥梁: cocoa frameworks 有两个框架: foundation foundation  是cocoa中最基本的一些类:再mac应用程序中负责对象管理,内存管理,容器等相关数据: uikit: uikit:为程序提供可视化的底层构架,包括窗口,视图,控件类和

[APUE]UNIX进程的环境(下)

一.共享库 共享库使得可执行文件中不再需要包含常用的库函数,而只需在所有进程都可存取的存储区中保存这种库例程的一个副本.程序第一次执行的时候或第一次调用某个库函数的时候,用动态链接方法将程序与共享库函数相链接,这减少了每个可执行文件的长度,但增加了一些运行时间开销.另一个优点就是可以用库函数的新版本来替换老版本而无需对该库的程序重新链接编译. 不同的系统使用不同的方法说明程序是否需要使用共享库.比较典型的有cc和ld命令的可选项. 二. 存储器分配 ANSI C说明了三个存储空间动态分配的函数(

内存池技术介绍(图文并茂,非常清楚)

看到一篇关于内存池技术的介绍文章,受益匪浅,转贴至此. 原贴地址:http://www.ibm.com/developerworks/cn/linux/l-cn-ppp/index6.html 6.1 自定义内存池性能优化的原理 如前所述,读者已经了解到"堆"和"栈"的区别.而在编程实践中,不可避免地要大量用到堆上的内存.例如在程序中维护一个链表的数据结构时,每次新增或者删除一个链表的节点,都需要从内存堆上分配或者释放一定的内存:在维护一个动态数组时,如果动态数组的

Buddy system伙伴分配器实现

wikipedia:http://en.wikipedia.org/wiki/Buddy_memory_allocation The buddy memory allocation technique is a memory allocation algorithm that divides memory into partitions to try to satisfy a memory request as suitably as possible. This system makes us

JVM的基本结构及其各部分详解(二)

3.2 栈帧组成之操作数栈 操作数栈是栈帧的主要内容之一,它主要用于保存计算过程中的中间结果,同时作为计算过程中变量临时的存储空间. 操作数栈也是一个先进后出的数据结构,只支持入栈和出栈两种操作,许多java字节码指令都需要通过操作数栈进行参数传递.比如add指令,它就会在操作数栈中弹出两个整数并进行加法计算,计算结果会被入栈,如图:显示了iadd前后操作数栈的变化. 3.3 帧数据区 除了局部变量表和操作数栈,java栈帧还需要一些数据来支持常量池的解析.正常方法返回和异常处理等.大部分jav

可能碰到的iOS笔试面试题(4)--C语言

可能碰到的iOS笔试面试题(4)--C语言 可能碰到的iOS笔试面试题(4)--C语言 C语言,开发的基础功底,iOS很多高级应用都要和C语言打交道,所以,C语言在iOS开发中的重要性,你懂的.里面的一些问题可能并不是C语言问题,但是属于计算机的一些原理性的知识点,所以我就不再另外写一篇文章了,直接写在这里. 当你写下面的代码时会发生什么事? least = MIN(*p++, b); 结果是:((p++) <= (b) ? (p++) : (*p++)) 这个表达式会产生副作用,指针p会作三次

《Unix环境高级编程》读书笔记 第7章-进程环境

1. main函数 int main( int argc, char *argv[] ); argc是命令行参数的数目,包括程序名在内 argv是指向参数的各个指针所构成的数组,即指针数组 当内核执行C程序时(使用exec函数),在调用main前先调用一个特殊的启动例程.可执行程序文件将此启动例程指定为程序的起始地址——这是由连接器设置的,而连接器则是由C编译器调用.启动例程从内核取得命令行参数和环境变量值,然后按上述方式调用main函数做好安排. 2. 进程终止 有8种方式使进程终止,其中5种