malloc() 与 HeapAlloc()
malloc() 和 HeapAlloc() 有什么区别?据我了解 malloc 从堆中分配内存,就像 HeapAlloc 一样,对吗?
What is the difference between malloc() and HeapAlloc()? As far as I understand malloc allocates memory from the heap, just as HeapAlloc, right?
那有什么区别?
谢谢!
推荐答案
他们都从堆分配内存是对的.但也有区别:
You are right that they both allocate memory from a heap. But there are differences:
malloc()
是可移植的,是标准的一部分.HeapAlloc()
不可移植,它是一个 Windows API 函数.
malloc()
is portable, part of the standard.HeapAlloc()
is not portable, it's a Windows API function.
很可能,在 Windows 上,malloc
将在 HeapAlloc
之上实现.我希望 malloc
比 HeapAlloc
快.
It's quite possible that, on Windows, malloc
would be implemented on top of HeapAlloc
. I would expect malloc
to be faster than HeapAlloc
.
HeapAlloc
比 malloc
具有更大的灵活性.特别是它允许您指定要从哪个堆分配.这迎合了每个进程的多个堆.
HeapAlloc
has more flexibility than malloc
. In particular it allows you to specify which heap you wish to allocate from. This caters for multiple heaps per process.
对于几乎所有的编码场景,您将使用 malloc
而不是 HeapAlloc
.虽然因为你标记了你的问题 C++,我希望你使用 new
!
For almost all coding scenarios you would use malloc
rather than HeapAlloc
. Although since you tagged your question C++, I would expect you to be using new
!
相关文章