Linux 如果出现整数溢出错误,请将堆栈大小增加到20 gb

Linux 如果出现整数溢出错误,请将堆栈大小增加到20 gb,linux,memory,c,stack,Linux,Memory,C,Stack,我需要运行一个C程序,它将在执行时使用大约20Gb的RAM。我得到了他的帮助 我正在尝试使用setrlimit扩展Linux上的堆栈大小。但是当我尝试将20*1024*1024*1024赋值给rlim\u cur时,编译器 警告:表达式[-Woverflow]中存在整数溢出。 如何展开堆栈?计算20*1024*1024*1024在int常量上执行;结果具有int类型。在x86_64平台上,int不足以表示大数字(大于231)-这是编译器所说的 要正确执行此操作,请使用具有64位的类型。在的描述中

我需要运行一个C程序,它将在执行时使用大约20Gb的RAM。我得到了他的帮助

我正在尝试使用
setrlimit
扩展Linux上的堆栈大小。但是当我尝试将
20*1024*1024*1024
赋值给
rlim\u cur
时,编译器

警告:表达式[-Woverflow]中存在整数溢出。


如何展开堆栈?

计算
20*1024*1024*1024
int
常量上执行;结果具有
int
类型。在x86_64平台上,
int
不足以表示大数字(大于231)-这是编译器所说的

要正确执行此操作,请使用具有64位的类型。在的描述中,我看到
rlim\u cur
的类型为
rlim\u t
。因此,使用这种64位类型似乎很自然:

... = (rlim_t)20*1024*1024*1024

也许试着用堆来代替?问题很可能是无法将20*1024*1024*1024存储到rlim_cur中,因为它只是一个整数。您尝试存储的数字长度为35位,因此无法将其存储在32位整数中。如果rlim_cur是32位int,则您可能位于32位平台上,并且无论如何无法处理超过4GB的地址。
arch
命令说什么?