0424
来源:互联网 发布:淘宝秒杀助手官方下载 编辑:程序博客网 时间:2024/06/16 04:54
释放一个内存块,OSMemPut()
- 当用户应用程序不再使用一个内存块时,必须及时地把它释放并放回到相应的内存分区中。这个操作由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
- 0424
- 0424
- 查看Linux版本信息
- Android事件分发机制源码畅游解析(Activity篇)
- Hihocoder-1286 子矩阵求和
- 一阶RC低通滤波
- 开启 控制文件自动备份下,参数文件、控制文件全部丢失恢复
- 0424
- Android中关于接口回调
- 安卓沉浸式状态栏延生与透明设置
- RobotFramework RIDE run报‘class Importerr ,no module name rebot’错误的解决方法
- elasticsearch-head安装及启动
- 51nod_1008 N的阶乘 mod P
- Gdal读取矢量文件
- css3编写扇形
- (五)RabbitMQ消息队列-安装amqp扩展并订阅/发布Demo(PHP版)