繁体   English   中英

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

[英]Accessing a 2D array defined in a typedef struct in the main function. Code is in C

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

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

是的,如果您不为Mat赋值,则将其视为“悬挂指针”,尝试访问该值将导致未定义的行为。 您还必须为每个矩阵分配自己的内存块,否则它们都将指向同一矩阵。 请参见下面的示例(假设dt是一个链表):

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM