0

我已经多次遇到这个问题,但我对此一无所知。我搜索了很多网站。我收集的信息是:

MemAlloc 是一个免费的内存分配工具。它允许您通过请求任意数量的内存来对 Windows 操作系统进行压力测试。

void * Memalloc(ulong size,int flags);

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

这些信息不能回答我的疑问,而且这个概念对我来说仍然不是很清楚。如果您描述 memalloc 的用途,那将是您的好意。

我还有一个问题:如果是内存分配工具,malloc 和 memalloc 有什么区别?

4

2 回答 2

4

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

Memalloc这是一个调试库,其中包含能够检测内存泄漏的内存分配方法。Memalloc 在我看来就像是 Windows 的包装器GlobalAlloc

那么有什么区别malloc呢?这是未知的,但是在我看来,它不像大多数 malloc 实现那样快,因为它使用相对过时的方法GlobalAlloc,而大多数 malloc 实现使用VirtualAlloc.

看看 MSDN 是怎么说的GlobalAlloc

注意 与其他内存管理函数相比,全局函数的开销更大,提供的功能更少。除非文档说明应使用全局函数,否则新应用程序应使用堆函数。有关详细信息,请参阅全局和局部函数。

于 2013-09-12T07:54:52.020 回答
2

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

显然,根据您给出的报价,某些库提供了一个名为 MemAlloc 的函数,我猜它会为内存分配一些额外的功能(您需要阅读每个库的文档以了解确切的区别) . 这个函数本身甚至可能使用 malloc。

于 2013-09-12T10:19:05.210 回答