内存分配问题

2019-07-20 15:16发布


u8 my_mem_free(u8 memx,u32 offset)  
{  
    int i;  
    if(!mallco_dev.memrdy[memx])//Î′3õê¼»ˉ,ÏèÖ′DD3õê¼»ˉ
        {
                mallco_dev.init(memx);   
        return 1;//Î′3õê¼»ˉ  
    }  
    if(offset<memsize[memx])//&#198;&#171;ò&#198;&#212;ú&#196;ú′&#230;3&#216;&#196;ú.
    {  
        int index=offset/memblksize[memx];                        //&#198;&#171;ò&#198;&#203;ù&#212;ú&#196;ú′&#230;&#191;éo&#197;&#194;&#235;  
        int nmemb=mallco_dev.memmap[memx][index];        //&#196;ú′&#230;&#191;éêyá&#191;
        for(i=0;i<nmemb;i++)                                                  //&#196;ú′&#230;&#191;é&#199;&#229;á&#227;
        {  
            mallco_dev.memmap[memx][index+i]=0;  
        }  
        return 0;  
    }else return 2;//&#198;&#171;ò&#198;3&#172;&#199;&#248;á&#203;.  
}

请问原子哥,这个函数释放内存,实际只是把内存管理表对应的标识位清零了,内存池对应空间不要操作吗?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
augustedward
1楼-- · 2019-07-20 16:09
 精彩回答 2  元偷偷看……
傻彪5213
2楼-- · 2019-07-20 19:35
augustedward 发表于 2017-4-14 17:29
不需要操作,下次使用时会覆盖的

覆盖应该不是很理想;如果上次分配空间释放以后不擦除,但是内存表对应块标识字节都清除了,可以用用来再次分配.而上次分配的一部分,下次分配给另一个指针变量,而对这部分进行操作时没有写成功,但是读取的时候却得到内容,这样应该有问题.

一周热门 更多>