什么是C中的MemAlloc?它与malloc有什么不同?

时间:2013-09-12 07:46:45

标签: c memory-management

我多次面对这个问题,但我不知道。我搜索了很多网站。我收集的信息是:

  

MemAlloc是一款免费的内存分配工具。它允许您通过请求任何数量的内存来压缩和测试Windows操作系统。

  

void * Memalloc(ulong size,int flags);

     

在OllyDbg的上下文中分配内存。请求被重定向到GlobalAlloc()。用它来分配更大的内存块。调用Memfree()来释放这段记忆。

这些信息不能回答我的疑问,这个概念对我来说仍然不是很清楚。如果你描述memalloc的目的,那将是你的一种。

我有另一个问题:如果是内存分配工具,malloc与memalloc之间的区别是什么?

2 个答案:

答案 0 :(得分:4)

  

OllyDbg是一个32位汇编程序级别的分析调试程序,适用于Microsoft®Windows®。强调二进制代码分析使其在源不可用的情况下特别有用。

这是一个调试库,其中包含Memalloc等内存分配方法,可以检测内存泄漏。 Memalloc像Windows GlobalAlloc上的包装一样找我。

那么malloc有什么区别?它是未知的,但是在我看来,它不像大多数malloc实现那么快,因为它使用相对过时的GlobalAlloc,而大多数malloc实现使用VirtualAlloc分配大块。

了解MSDN对GlobalAlloc所说的内容:

  

注意全局函数比其他内存管理函数具有更大的开销并提供更少的功能。除非文档声明应该使用全局函数,否则新应用程序应该使用堆函数。有关更多信息,请参阅全局和本地函数。

答案 1 :(得分:2)

答案是malloc是C标准库的一部分,存在于任何C编译器/工具链,而MemAlloc不是C标准的一部分。

显然,根据你给出的引文,有些库提供了一个名为MemAlloc的函数,我想用一些额外的功能来分配内存(你需要阅读每个库的文档才能知道确切的区别)。 这个函数本身甚至可以使用malloc。