gpt4 book ai didi

c - 在堆上分配小内存块?

转载 作者:行者123 更新时间:2023-11-30 20:00:59 25 4
gpt4 key购买 nike

我现在正在学习一些 C 语言,并试图了解手动内存管理。

我知道堆栈(自动处理)和堆(不自动处理)。

要处理堆的内存分配,您可以使用 malloc 。我听说有些人使用特定于平台的分配函数,例如 VirtualAllocHeapAlloc出于性能原因。

但是我读过VirtualAlloc应该仅用于一次分配大量内存。那么如何在堆上分配少量内存呢?首选平台特定功能,可实现最佳性能。

最佳答案

堆和栈只是以不同方式管理的内存。事实上,您可以拥有多个堆和多个堆栈。堆必须由库管理。

在系统级别,内存以页为单位分配给进程。系统服务可以定义页面到磁盘的映射以及对页面的保护。 VirtualAlloc 就是这样一种系统服务(或一个包装器)。

堆管理器从操作系统分配页面来创建和扩展堆,然后管理堆内较小的分配。 HeapAlloc 和 malloc 是堆管理器使用的函数。

除非需要分配大块内存,否则应该使用 malloc。

关于c - 在堆上分配小内存块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37105819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com