c中的动态内存分配?

时间:2014-01-20 22:15:35

标签: c arrays dynamic

#include <stdio.h>
.
.
.
// Dynamic Array
int **tab=(int**)malloc(sizeof(int*)*n);
for(i=0;i<2;i++)
    {
   tab[i]=(int*)malloc(sizeof(int)*2);
    }
// Array = 0
for(i=0;i<n;i++)
{
    tab[i][0]=0;
    tab[i][1]=0;
}
.
.
.

程序在Array = 0注释之后崩溃。 请帮助我完成任务。

注意: n由用户给出,可以是任何int。

1 个答案:

答案 0 :(得分:1)

看起来你只是为tab的前两个指针而不是n个元素分配内存。然后,如果n大于2,那么你试图取消引用可能指向任何东西的指针。要解决此问题,只需将第一个for循环中的2更改为n即可。

for(i=0; i < n; i++)
{
    tab[i]=(int*)malloc(sizeof(int)*2);
}