访问main函数中typedef结构中定义的2D数组。代码在C中

时间:2016-07-05 19:38:27

标签: c arrays matrix typedef

typedef struct DT {
   int ID;                  /* Class ID of this training pattern */
   int VecDim;              /* Vector dimension in Mat */
   int VecNum;              /* Number of vectors in Mat */
   float **Mat;             /* Vector sequence */
   struct DT *Next;
} DType;

2D阵列在typedef struct中定义。我想在main函数中访问它,其尺寸为[10000] [64]。我需要8个这样的矩阵,其中每个矩阵从数据阵列读取64字节的数据。该操作使得数据阵列的前64个字节填充在第一矩阵的第一行中,下一个64填充在第二矩阵的第一行中,依此类推。当所有8个矩阵的第一行都填满时,它将开始填充每个矩阵的第二行。 这里Mat是一个2D数组,我必须在main函数中访问它。我是否需要为每个创建的矩阵分配单独的内存?

1 个答案:

答案 0 :(得分:0)

  

我是否需要为每个创建的矩阵分配单独的内存?

是的,如果您没有为Mat分配值,则会将其视为"悬空指针,"并尝试访问它将导致未定义的行为。您还必须为每个矩阵分配自己的内存块,否则它们都将指向相同的矩阵。请参阅下面的示例(假设dt是链接列表):

DType *dt = ...;
while(dt)
{
    dt->Mat = malloc(10000 * 64 * sizeof(float));
    dt = dt->Next;
}