C 分段故障-大阵列
当我试图编译用C编写的代码时,我遇到了一个奇怪的错误C 分段故障-大阵列,c,arrays,segmentation-fault,C,Arrays,Segmentation Fault,当我试图编译用C编写的代码时,我遇到了一个奇怪的错误 segmentation fault (core dumped) 在我的代码中,我有很多非常大的双数组(比如长度接近100000的数组)。我初始化了一个双精度数组,当我尝试在之后立即初始化一个相同大小的数组(大约100000个长度)时,它给出了分段错误。奇怪的是,这取决于数组的大小。例如,如果我这样做 double arr[70000]; 它给了我分割错误,但是 double arr[60000]; 没有给
segmentation fault (core dumped)
在我的代码中,我有很多非常大的双数组(比如长度接近100000的数组)。我初始化了一个双精度数组,当我尝试在之后立即初始化一个相同大小的数组(大约100000个长度)时,它给出了分段错误。奇怪的是,这取决于数组的大小。例如,如果我这样做
double arr[70000];
它给了我分割错误,但是
double arr[60000];
没有给我错误。如果有帮助的话,我正在linux机器上运行我的代码。我真的需要很多不同的非常大的双阵列。发生了什么事?您遇到了“堆栈溢出”;基本上,您已经耗尽了程序可用的堆栈空间
如果您在堆上(在堆存储中)分配阵列,您可能就没事了
使用C,您可能会使用malloc指令分配内存
当然,在使用完内存后,您会记得使用free
指令返回内存。您遇到了“堆栈溢出”;基本上,您已经耗尽了程序可用的堆栈空间
如果您在堆上(在堆存储中)分配阵列,您可能就没事了
使用C,您可能会使用malloc指令分配内存
当然,在使用完内存后,您会记得使用free
指令返回内存。您遇到了“堆栈溢出”;基本上,您已经耗尽了程序可用的堆栈空间
如果您在堆上(在堆存储中)分配阵列,您可能就没事了
使用C,您可能会使用malloc指令分配内存
当然,在使用完内存后,您会记得使用free
指令返回内存。您遇到了“堆栈溢出”;基本上,您已经耗尽了程序可用的堆栈空间
如果您在堆上(在堆存储中)分配阵列,您可能就没事了
使用C,您可能会使用malloc指令分配内存
当然,当您使用完内存后,您会记得使用
free
指令返回内存。您尝试过使用gdb吗?这些是数组局部变量吗?如果是这样的话,您将得到一个堆栈溢出…60000个双倍的副本放入半兆字节的堆栈中;70000双打不行。我猜你的堆栈大小是半兆字节。或者,更可能的情况是,您的堆栈大小更大,但您拥有足够多的这些大型阵列,已经超出了限制。使用动态内存分配(malloc()
等)来分配堆上的数组。确保每一次分配都是免费的;如果你不这样做的话,你的钱会用完的。(并且在使用返回的指针之前检查每个分配都是成功的)。建议的重复问题是名义上的C++,并且处理较大的数组大小(4 MIB而不是0.5 MIB),但否则很可能是同一个问题。你使用GDB了吗?这些数组局部变量吗?如果是这样的话,您将得到一个堆栈溢出…60000个双倍的副本放入半兆字节的堆栈中;70000双打不行。我猜你的堆栈大小是半兆字节。或者,更可能的情况是,您的堆栈大小更大,但您拥有足够多的这些大型阵列,已经超出了限制。使用动态内存分配(malloc()
等)来分配堆上的数组。确保每一次分配都是免费的;如果你不这样做的话,你的钱会用完的。(并且在使用返回的指针之前检查每个分配都是成功的)。建议的重复问题是名义上的C++,并且处理较大的数组大小(4 MIB而不是0.5 MIB),但否则很可能是同一个问题。你使用GDB了吗?这些数组局部变量吗?如果是这样的话,您将得到一个堆栈溢出…60000个双倍的副本放入半兆字节的堆栈中;70000双打不行。我猜你的堆栈大小是半兆字节。或者,更可能的情况是,您的堆栈大小更大,但您拥有足够多的这些大型阵列,已经超出了限制。使用动态内存分配(malloc()
等)来分配堆上的数组。确保每一次分配都是免费的;如果你不这样做的话,你的钱会用完的。(并且在使用返回的指针之前检查每个分配都是成功的)。建议的重复问题是名义上的C++,并且处理较大的数组大小(4 MIB而不是0.5 MIB),但否则很可能是同一个问题。你使用GDB了吗?这些数组局部变量吗?如果是这样的话,您将得到一个堆栈溢出…60000个双倍的副本放入半兆字节的堆栈中;70000双打不行。我猜你的堆栈大小是半兆字节。或者,更可能的情况是,您的堆栈大小更大,但您拥有足够多的这些大型阵列,已经超出了限制。使用动态内存分配(malloc()
等)来分配堆上的数组。确保每一次分配都是免费的;如果你不这样做的话,你的钱会用完的。(并且在使用返回的指针之前检查每个分配是否成功))所提出的重复问题名义上是C++,并且处理较大的数组大小(4 MIB而不是0.5 MIB),但否则很可能是相同的问题。