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;
在typedef struct
中定义了一个2D数组。我想在main函数中访问它,维度为[10000][64]。我需要8个这样的矩阵,其中每个矩阵从数据数组读取64字节的数据。操作是这样的,数据数组的前64个字节填充在第一个矩阵的第一行,下一个64个字节填充在第二个矩阵的第一行,依此类推。当所有8个矩阵的第一行都被填满后,它将开始填充每个矩阵的第二行。这里Mat
是一个二维数组,我必须在main函数中访问它。我是否需要为创建的每个矩阵分配单独的内存?
我是否需要为创建的每个矩阵分配单独的内存?
是的,如果你不给Mat
赋值,它被认为是一个"悬浮指针",并且试图访问它将导致未定义的行为。您还必须为每个矩阵分配自己的内存块,否则它们都将指向相同的矩阵。请看下面的例子(假设dt
是一个链表):
DType *dt = ...;
while(dt)
{
dt->Mat = malloc(10000 * 64 * sizeof(float));
dt = dt->Next;
}