gpt4 book ai didi

c++ - 连续内存分配

转载 作者:搜寻专家 更新时间:2023-10-31 01:09:49 27 4
gpt4 key购买 nike

在一个应用程序中,我必须分配两个 480 MB 的缓冲区。内存分配是使用 HeapAlloc 方法完成的。该应用程序在运行的应用程序不多的系统中运行良好。但是在其他应用程序也在运行的系统中,由于连续内存不可用,因此不会分配内存。即使内存空间(非连续)可用但未分配。

需要帮助分配两个 480 MB 的缓冲区,即使不连续的内存可用。

最佳答案

在为每个进程提供自己的地址空间的全功能操作系统中,您描述的情况是不可能的。不管有多少其他应用程序正在运行,它们都不会影响进程中可用地址空间的连续性。并且虚拟内存可以将不连续的物理内存地址映射到虚拟地址空间中的连续范围。

只有在没有内存管理单元的嵌入式系统中,其他任务的存在才会导致你的程序出现内存碎片。

HeapAlloc() 建议使用 Windows,它确实为每个进程提供了单独的地址空间。最可能的解释是您的私有(private)地址空间被分散在不同位置的库 (DLL) 所分散。您可以对您使用的库进行 rebase 以避免这种情况,并提供更大的连续地址空间 block 。

关于c++ - 连续内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16601848/

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