c自定义内存区域的malloc功能
是否有任何malloc / realloc /免费类似的实现,我可以指定一个内存区域在哪里管理内存分配?
我的意思是常规的malloc(等)函数只管理堆内存区域。 如果我需要在共享内存段或内存映射文件中分配一些空间,该怎么办?
不是100%,根据你的问题你想维护自己的内存区域。 所以你需要去为自己的my_malloc
, my_realloc
和my_free
实现你自己的my_malloc
可能会对你有所帮助
void* my_malloc(int size)
{
char* ptr = malloc(size+sizeof(int));
memcpy(ptr, &size, sizeof(int));
return ptr+sizeof(int);
}
这只是一个小想法,完整的实施将带你到答案。
参考这个问题
使用相同的方法来实现my_realloc
和my_free
我最近也问了自己这个问题,因为我想为我的安全程序实现一个malloc实现,它可以在退出之前安全地清除静态内存区域(包含敏感数据,如加密密钥,密码和其他此类数据)。
首先,我找到了这个。 我认为这可能对我的目的非常好,但我完全无法理解它的代码。 许可证状态也不清楚,因为它对我的一个项目也非常重要。
我最终写了自己的。 我自己的实现同时支持多个堆,使用池描述符结构对它们进行操作,对释放块进行自动内存调零,未定义的行为和OOM处理程序,获取已分配对象的确切可用大小,并测试指针是否仍然分配,这是非常充分的为了我。 这不是很快,它是更具教育意义的,而不是专业的,但我想匆忙。
请注意,它还不知道对齐要求,但至少它返回一个适合存储32位整数的地址。
Iam使用Tasking,我可以将数据存储在特定的内存空间中。 例如,我可以使用:
testVar _at(0x200000);
我不确定这是你在找什么,但例如我使用它来存储数据到外部RAM。 但据我所知,它只适用于全局变量。
链接地址: http://www.djcxy.com/p/80441.html