我需要运行一个C程序,在执行时将使用大约20Gb
的RAM。我从Change stack size for a C++ application in Linux during compilation with GNU compiler获得了帮助。
我正在尝试使用setrlimit
扩展Linux上的堆栈大小。但是当我尝试将20*1024*1024*1024
分配给rlim_cur
时,编译器
warning: integer overflow in expression [-Woverflow]
如何扩展堆栈?
答案 0 :(得分:0)
计算20*1024*1024*1024
在int
常数上执行;结果为int
类型。在x86_64平台上,int
不足以表示大数(大于2 31 ) - 这就是编译器所说的。
要做到正确,请使用64位的类型。在setrlimit
的说明中,我看到rlim_cur
的类型为rlim_t
。因此,使用这种64位类型似乎很自然:
... = (rlim_t)20*1024*1024*1024