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])//Æ«òÆÔúÄú′æ3ØÄú.
{
int index=offset/memblksize[memx]; //Æ«òÆËùÔúÄú′æ¿éoÅÂë
int nmemb=mallco_dev.memmap[memx][index]; //Äú′æ¿éêyá¿
for(i=0;i<nmemb;i++) //Äú′æ¿éÇåáã
{
mallco_dev.memmap[memx][index+i]=0;
}
return 0;
}else return 2;//Æ«òÆ3¬ÇøáË.
}
请问原子哥,这个函数释放内存,实际只是把内存管理表对应的标识位清零了,内存池对应空间不要操作吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
覆盖应该不是很理想;如果上次分配空间释放以后不擦除,但是内存表对应块标识字节都清除了,可以用用来再次分配.而上次分配的一部分,下次分配给另一个指针变量,而对这部分进行操作时没有写成功,但是读取的时候却得到内容,这样应该有问题.
一周热门 更多>