释放一个内存块,OSMemPut()
来源:互联网 发布:电子音合成软件 编辑:程序博客网 时间:2024/05/22 00:07
当用户应用程序不再使用一个内存块时,必须及时地把它释放并放回到相应的内存分区中。这个操作由OSMemPut()函数完成。必须注意的是,OSMemPut()并不知道一个内存块是属于哪个内存分区的。例如,用户任务从一个包含32字节内存块的分区中分配了一个内存块,用完后,把它返还给了一个包含120字节内存块的内存分区。当用户应用程序下一次申请120字节分区中的一个内存块时,它会只得到32字节的可用空间,其它88字节属于其它的任务,这就有可能使系统崩溃。程序清单 L7.5是OSMemPut()函数的源代码。它的第一个参数pmem是指向内存控制块的指针,也即内存块属于的内存分区[L7.5(1)]。OSMemPut()首先检查内存分区是否已满[L7.5(2)]。如果已满,说明系统在分配和释放内存时出现了错误。如果未满,要释放的内存块被插入到该分区的空闲内存块链表中[L7.5(3)]。最后,将分区中空闲内存块总数加1[L7.5(4)]。程序清单 L7.5 OSMemPut()INT8U OSMemPut (OS_MEM *pmem, void *pblk) (1){ OS_ENTER_CRITICAL(); if (pmem->OSMemNFree >= pmem->OSMemNBlks) { (2) OS_EXIT_CRITICAL(); return (OS_MEM_FULL); } *(void **)pblk = pmem->OSMemFreeList; (3) pmem->OSMemFreeList = pblk; pmem->OSMemNFree++; (4) OS_EXIT_CRITICAL(); return (OS_NO_ERR);}
0 0
- 释放一个内存块,OSMemPut()
- 等待一个内存块
- 分配一个内存块,OSMemGet()
- Dll分配的内存块,应用程序释放,结果报异常
- Dll分配的内存块,应用释放的问题
- Dll分配的内存块,应用释放的问题
- Dll分配的内存块,应用释放的问题
- Dll分配的内存块,应用释放的问题
- Dll分配的内存块,应用释放的问题
- Dll分配的内存块,应用释放的问题
- Dll分配的内存块,应用释放的问题
- CDesCArray内存释放的一个小问题
- android释放内存的一个办法
- android释放内存的一个办法
- 为一个二维数组动态分配&释放内存
- free函数释放malloc分配的内存,这块内存情况
- 用内存来虚拟一个块设备
- 内存释放
- 四种方式对数据进行统计
- 基本包装类型
- AS使用coding.net
- Postgresql使用注意小技巧
- redis之lists类型
- 释放一个内存块,OSMemPut()
- <mvn:default-servlet-handler/>标签作用
- 项目总结整理
- 文章标题
- string类的简单实现(深拷贝,浅拷贝)
- 图片压缩
- 僵尸进程
- 为什么 在springmvc.xml 中 配置了<mvc:default-servlet-handler /> 一定要配置<mvc:annotation-driven >?
- 剑指offer 重建二叉树