|
|
1
8
是的,几乎每次都是这样
例如,一个简单的实现可能只将块的大小存储在返回指针前面的空间中。然后,
在哪里?
|
|
|
2
4
是的,允许堆管理器返回大于
n
字节。它是完全安全的(而且是必需的!)使用
许多堆实现通过在堆中插入元数据块来跟踪它们的分配。
|
|
|
3
1
通常堆管理器将释放它分配的任何内容。它将这些信息存储在某个地方,并在
如果堆管理器分配的内存比请求的多,则它不是“错误的”。堆管理器通常使用固定的块大小,并且在满足请求时将舍入到下一个适当的块大小。堆管理器的工作是尽可能地高效,而高效通常是由一些小的低效导致的。 |
|
|
4
1
这是malloc的默认行为。它会回来的
找出实际空闲或分配了多少内存是一个特定于平台的问题。 |
|
|
5
1
其他答案很好地解释了块大小是如何处理的。要想知道释放了多少内存,我唯一能想到的方法是调用
|
|
|
Ofek Pintok · 释放C中指针指针的动态内存 8 年前 |
|
|
brneuro · 让valgrind开心vs避免segfault 8 年前 |
|
|
Carpetfizz · 非动态数组何时在结构中释放 9 年前 |