使用malloc()的第二个维度大小不等的多维数组

ash*_*agi 4 c malloc multidimensional-array

我正在使用不等的第二维尺寸的多维数组.让我们假设我需要以下数据结构:

[&PTR0] - > [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

[&PTR1] - > [0] [1] [2]

[&PTR2] - > [0] [1] [2] [3] [4]

int main()
{
 int *a[3];
 int *b;
 int i;

 a[0] = (int *)malloc(10 * sizeof(int));
 a[1] = (int *)malloc(2 * sizeof(int));
 a[2] = (int *)malloc(4 * sizeof(int));

 for(i=0; i<10; i++) a[0][i]=i;

 for(i=0; i<2; i++) a[1][i]=i;

 for(i=0; i<4; i++) a[2][i]=i;
}
Run Code Online (Sandbox Code Playgroud)

我做了一些测试,似乎我可以在[1] [3]中存储一个值.这是否意味着我的数组中的行大小相等10?

Pho*_*ong 5

不,地址a [1] [3]不"正式存在".它是一个未在程序中定义的内存,访问它会导致未定义的行为.

它可能导致以下错误:

  • 分段错误(访问受限内存)
  • 使用了其他变量(其他分配内存)已经使用过的内存(可能会覆盖)
  • 它可以是未初始化的值(未使用的内存地址)