【问题标题】:How to manipulate heap size with custom malloc? (C++ LLVM)如何使用自定义 malloc 操作堆大小? (C++ LLVM)
【发布时间】:2020-12-06 06:21:48
【问题描述】:

我知道可以覆盖 malloc、realloc、free 等。

但我没有看到根据需要操纵堆大小的方法。我怎样才能根据需要扩大/缩小它?

【问题讨论】:

  • 取决于你所说的“堆”是什么意思——它不是 C++ 中的标准术语。对于少数几个系统,它可能指的是由操作系统管理的内存区域,可以请求该区域并使其可供程序使用,然后该程序可以为其自己分配该内存(就主机系统而言是临时的) 采用。可用的数量由主机平台设置和管理(这就是程序在动态分配内存时向系统请求它的原因)。覆盖malloc()free() 等不是改变它的方法。

标签: c++ memory-management malloc llvm


【解决方案1】:

堆是 malloc 返回内存的地方。

如果内存可用,malloc() 的古老实现将返回已使用 free() 释放的内存,否则使用 sbrk() 从 unix 内核请求更多内存。更现代的人倾向于使用mmap("/dev/zero") 或类似的代替。其他操作系统通常与其中一种或两种类似。

堆大小的限制可以在 malloc 本身或 malloc 使用的操作系统机制中实现。

【讨论】:

    猜你喜欢
    • 2016-06-23
    • 2021-09-23
    • 2014-06-14
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多