gpt4 book ai didi

c++ - 64位内存分配

转载 作者:IT王子 更新时间:2023-10-28 23:35:06 29 4
gpt4 key购买 nike

我被要求在 C++ 中创建一个与 Delphi 兼容的 dll 来进行简单的 64 位内存管理。

背景是 Delphi 中的系统需要分配大量内存块,这些内存块可以很好地超出 32 位可寻址空间。 Delphi 开发人员向我解释说,他无法使用可用的 Delphi 命令分配内存。他说他可以持有一个64位的地址,所以他只想调用我提供的一个函数来分配内存并返回一个64位的指针给他。然后另一个函数稍后释放内存。

现在,我只有 VS 2008 可供我使用,所以首先我什至不确定我是否可以首先创建一个与 Delphi 兼容的 dll。

任何 Delphi 专家都愿意帮助我。也许有一种方法可以在不重新发明轮子的情况下实现他的要求。其他开发人员一定在 Delphi 中遇到过这种情况。

感谢所有评论。

最佳答案

只有 64 位进程可以寻址 64 位内存。 64 位进程只能加载 64 位 dll,32 位进程只能加载 32 位 dll。 Delphi 的编译器只能生成 32 位二进制文​​件。

所以 32 位 Delphi exe 无法加载您的 64 位 c++ dll。它可以加载 32 位 c++ dll,但该 dll 将无法寻址 64 位内存空间。你有点被这个解决方案卡住了。

使用正确的编译器选项和 Windows 开关,Delphi 可以毫无问题地处理 3GB 内存。如果 32 位进程使用 Physical Address Extension,则可以访问更多内存。 .然后它需要通过使用 Address Windowing Extensions 将内存页面交换进出 32 位内存。 .

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

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