如果因素很小,下面的代码工作正常但是当它变大时我会遇到分段错误。我遇到的第一个实例大小约为800.000。 这应该很容易适应记忆或我错过了什么? 感谢任何帮助。
char *fgs_arr [facs().size()],
*true_arr[facs().size()],
*maps_arr[facs().size()];
答案 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());