动态存储分配

来源:互联网 发布:java 鼠标移动事件 编辑:程序博客网 时间:2024/05/19 05:32
动态存储分配
通过标准C 的功能函数malloc 和free
Keil C 提供了动态存储分配功能对大多
数应用来说应尽可能在编译的时候确定
所需要的内存空间并进行分配但是对
于有些需要使用动态结构如树和链表的应用来说这种方式就不再适用了Keil C 对这种
应用提供了有力的支持
动态分配函数要求用户声明一个字节数组作为堆根据所需要动态内存的大小来决定
数组的长度作为堆被声明的数组在XDATA 区中因为库函数使用特定指针来进行寻址
此外也没有必要在DATA 区中动态分配内存因为DATA 区的空间本身就很小
一旦在XDATA 区中声明了这个块指向块的指针和块的大小要传递给初始化函数
init_mempool ,他将设置一些内部变量和进行一些准备工作并对动态存储空间进行初始
化一旦初始化工作完成可在任何系统中调用动态分配函数动态分配的函数包括
malloc(接受一个描述空间大小的unsigned int 参数,返回一个指针),calloc(接受一个描
述数量和一个描述大小的unsigned int 参数,返回一个指针),realloc(接受一个指向块的
指针和一个描述空间大小的unsigned int 参数,返回一个指向按给出参数分配的空间的指
针),free(接受一个指向块的指针,使这个空间可以再次被分配) 所有这些函数都将返回指
向堆的指针如果失败的话将返回NULL 下面是一个动态分配存储区的例子
原创粉丝点击