【发布时间】:2011-05-25 12:50:24
【问题描述】:
如何强制 gcc 编译一个程序,在该程序中我声明一个比我的内存大的无符号整数数组 - 而不会收到警告警告:“表达式中的整数溢出”?
例如。我有 8gb 的内存,我想声明一个 8.5gb 的数组。
编辑:
谢谢大家,我发现问题不在于数据类型,而在于一些预处理器。我花了很长时间。 :) 我写了
#define GIBI 1073741824
#define ARRAYSIZE 2*GIBI
显然编译器不喜欢这样。
【问题讨论】:
-
如果连内存都装不下,为什么还要有一个比内存大的数组?
-
警告是警告,而不是错误。 (可以选择是否将警告视为错误。)
-
@BlackBear:以下是人们想要分配比 RAM 更多的内存的几个原因: 1. 虚拟内存意味着您可以拥有比 RAM 更多的可用内存。 2. 您可能正在编译一个程序,该程序将在比您的开发机器拥有更多 RAM 的机器上运行。
-
这是有道理的。感谢您的解释! ;)
-
@Kristopher Johnson:这与 RAM 大小无关。堆栈大小(或者更准确地说,为堆栈保留的地址范围)从一开始就受到限制,如果尝试
alloca()比堆栈更多的空间,程序将崩溃。但是,在这个问题中,问题出在其他地方。
标签: c gcc stack stack-overflow gcc-warning