为什么这段代码抛出一个SIGSEGV
int main()
{
unsigned long toshuffle[9765625];
unsigned long i;
for (i=0; i< 1000; i++)
toshuffle[i]= i;
return 0;
}指示器将不胜感激。(无双关语:)
发布于 2009-10-27 16:08:01
使用malloc()来获得这么多内存。堆栈溢出了。
unsigned long *toshuffle = malloc(9765625 * sizeof(unsigned long));当然,当您使用完它时,您需要释放它()。
注意:在C++中,您需要将指针转换为正确的类型。
发布于 2009-10-27 16:07:19
可能是因为你不能在堆栈上分配9765625个长度(这个站点叫什么来着?:)。请改用malloc()。
发布于 2009-10-27 16:56:52
从manpage
进程堆栈的最大大小,以字节为单位。达到此限制时,会生成SIGSEGV信号。要处理此信号,进程必须使用备用信号堆栈(sigaltstack(2))。
https://stackoverflow.com/questions/1629352
复制相似问题