加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中分配超过4GB的内存

发布时间:2020-12-16 10:36:48 所属栏目:百科 来源:网络整理
导读:我需要在我的C程序中分配超过4GB的内存(在 Windows上运行 – 64位). 显然只使用malloc并不能解决问题. 我已经以这种方式阅读了之前的一些帖子,似乎 VirtualAlloc 可以解决我的问题. 我试图使用它,我不明白与此功能相关的所有参数. 我想我需要准确定义应该分
我需要在我的C程序中分配超过4GB的内存(在 Windows上运行 – 64位).
显然只使用malloc并不能解决问题.

我已经以这种方式阅读了之前的一些帖子,似乎VirtualAlloc可以解决我的问题.
我试图使用它,我不明白与此功能相关的所有参数.
我想我需要准确定义应该分配内存的地址,但我不知道该怎么做.
是否有关于它的简单信息,或者我可以使用的简单示例?

我也不需要在一个块中分配所有内容,因此它可能更容易.还可以接受任何分配超过4GB内存的替代方法.

谢谢.

解决方法

与您的语句相反,malloc()将解决问题,假设您正在使用可以生成64位可执行文件的实现(包括编译器和库),并且已将其配置为执行此操作(即构建64-位目标).某些工具链能够构建64位目标,但默认情况下(例如,在关联的IDE中使用)将只生成32位可执行文件.

如果要构建32位目标(即生成32位可执行文件),那么,是的,malloc()将限制为4GB.可以在64位系统上执行32位可执行文件(假设操作系统允许这样做).但是,在这种情况下,程序对malloc()的使用仍然限制在4GB.

这意味着您需要确保拥有可以构建64位程序的编译器并使用它来构建64位目标.

当然,您应该问的另一个问题是,您是否真的需要在一个块中分配超过4GB的空间.虽然在某些情况下这是合适的,但通常情况下,需要这样做的程序是设计不良或懒惰的标志.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读