我处理动态分配的矩阵。特别是我有这个代码(在C中):
int i, n, m;
char **matrix;
matrix = (char **)calloc((n, sizeof(char *));
for (i = 0; i <= n; ++i) {
matrix[i] = (char *)calloc(m, sizeof(char))
}
如果&#39; n&#39;这个程序工作得很好但是如果我大幅增加它(例如,我接受一个接近常量INT_MAX的值,在我的情况下INT_MAX是2.147.483.647)我的PC冻结了,我必须重新启动它。我想这个问题与堆最大大小有关。有可能以某种方式阻止它吗?或者您是否建议对“&#39; n&#39;
的增长设置合理的上限提前致谢!
答案 0 :(得分:3)
INT_MAX
是2GB的ram。你为每一行消耗了那么多的公羊,因此你的矩阵超过你的公羊容量。