堆的问题,PC死机

时间:2014-09-10 00:31:17

标签: c dynamic matrix heap calloc

我处理动态分配的矩阵。特别是我有这个代码(在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;

的增长设置合理的上限

提前致谢!

1 个答案:

答案 0 :(得分:3)

INT_MAX是2GB的ram。你为每一行消耗了那么多的公羊,因此你的矩阵超过你的公羊容量。