c自定义内存区域的malloc功能

是否有任何malloc / realloc /免费类似的实现,我可以指定一个内存区域在哪里管理内存分配?

我的意思是常规的malloc(等)函数只管理堆内存区域。 如果我需要在共享内存段或内存映射文件中分配一些空间,该怎么办?


不是100%,根据你的问题你想维护自己的内存区域。 所以你需要去为自己的my_mallocmy_reallocmy_free

实现你自己的my_malloc可能会对你有所帮助

void* my_malloc(int size)    
{
    char* ptr = malloc(size+sizeof(int));
    memcpy(ptr, &size, sizeof(int));
    return ptr+sizeof(int); 
}

这只是一个小想法,完整的实施将带你到答案。

参考这个问题

使用相同的方法来实现my_reallocmy_free


我最近也问了自己这个问题,因为我想为我的安全程序实现一个malloc实现,它可以在退出之前安全地清除静态内存区域(包含敏感数据,如加密密钥,密码和其他此类数据)。

首先,我找到了这个。 我认为这可能对我的目的非常好,但我完全无法理解它的代码。 许可证状态也不清楚,因为它对我的一个项目也非常重要。

我最终写了自己的。 我自己的实现同时支持多个堆,使用池描述符结构对它们进行操作,对释放块进行自动内存调零,未定义的行为和OOM处理程序,获取已分配对象的确切可用大小,并测试指针是否仍然分配,这是非常充分的为了我。 这不是很快,它是更具教育意义的,而不是专业的,但我想匆忙。

请注意,它还不知道对齐要求,但至少它返回一个适合存储32位整数的地址。


Iam使用Tasking,我可以将数据存储在特定的内存空间中。 例如,我可以使用:

testVar _at(0x200000);

我不确定这是你在找什么,但例如我使用它来存储数据到外部RAM。 但据我所知,它只适用于全局变量。

链接地址: http://www.djcxy.com/p/80441.html

上一篇: c malloc functionality for custom memory region

下一篇: C array malloc() VS {}