【发布时间】:2015-09-10 23:04:52
【问题描述】:
我有一个关于heap 和malloc 的简单问题:
当我们使用malloc分配一些内存空间时:
int *p;
p = (int*) malloc (10*sizeof(int));
它实际上在堆中分配了 10 个字。但是,我的问题是:
实际使用的内存空间真的是10个字吗?
还是需要其他额外的空间来存储内存大小的值?
或者,甚至,因为堆被构造为链表,是否还有其他内存空间用于存储指向堆中列表的下一个节点的地址?
【问题讨论】:
-
是的,malloc 有开销。这完全是特定于实现的。但总的来说,如果您的程序使用较少的大分配而不是许多小分配,那么它的内存效率会更高。
-
它是实现定义的。但是,在任何情况下,管理分配的内存都会有一些开销。您可以从以下地址开始阅读:en.wikipedia.org/?title=Memory_management
-
虽然问题基本相同,但那里的答案比这里的阐述要少。
标签: c++ c memory malloc heap-memory