关于C语言动态内存分配失败的问题

int main(void)
{
int m, n, *s, t;
printf("Input m, n:\n");
scanf("%d", &m, &n);
t = m * n;
s = (int *)calloc(t, sizeof(int));
if (s == NULL)
{
printf("Apply memory failly!\n");
exit(0);
}
printf("Input m*n square:\n");
Input(s, m, n);
PrintLargest(s, m, n);
free(s);
return 0;
}
为什么我的程序一直都跳进了if里面,也就是说动态内存分配失败

scanf("%d", &m, &n); //你输入m和n的时候只输入了m,n是个随机值,大多数情况下这个值很大,m*n是个很巨大的数字,导致没那么多内存分配
scanf("%d%d", &m, &n); //都输入追问

啊~~原来是这里啊QAQ
那我还想请问一下,一般内存分配失败是出现什么问题了

追答

大多数情况都是内存不足引起的,分配内存不光要数量够,空间还要连续

温馨提示:答案为网友推荐,仅供参考
相似回答