char指针segfaulting数组

时间:2012-02-16 18:32:17

标签: c++

如果因素很小,下面的代码工作正常但是当它变大时我会遇到分段错误。我遇到的第一个实例大小约为800.000。 这应该很容易适应记忆或我错过了什么? 感谢任何帮助。

char  *fgs_arr [facs().size()],  
      *true_arr[facs().size()],  
      *maps_arr[facs().size()];   

3 个答案:

答案 0 :(得分:3)

你的Stack(本地声明的内存所在的地方)已经用完了。你需要动态声明它(这会进入更大的堆)或增加堆栈大小。

答案 1 :(得分:3)

由于vla在堆栈上,并且堆栈(在大多数情况下)为1MB,因此 。使用malloc代替(并且不要忘记免费)。

答案 2 :(得分:0)

正如您所发现的,您的堆栈空间不足。切换到new是不优雅的;它会促进内存泄漏和其他错误。试试std::vector<char*>

std::vector<char*> fgs_arr(facs().size());
std::vector<char*> true_arr(facs().size());
std::vector<char*> maps_arr(facs().size());