我想要具有动态大小的指针数组,如何使用malloc
来做到这一点?
没有malloc
,它看起来像这样:
typedef struct Nodes {
UINT_64 Datasequence;
UINT_32 Data;
struct Nodes *next;
} Node;
Node *head_ri_interface[2][50];
这将为我提供[2][50]
个空指针的数组。
我已经尝试过了:
void NULLPointerArrayInit(int MAX_LIST_HEAD) {
int i = 0;
for (i = 0; i < 2; i++) {
head_ri_interface[i] = (Node *)malloc(sizeof(Node *) * MAX_LIST_HEAD);
}
}
但是我看到我指向的结构不是NULL。我在做什么错了?
答案 0 :(得分:1)
void ** 2Darray = malloc(2*sizeof(void*));
int i;
for(i = 0; i < 2; i++){
2Darray[i] = malloc(MAX_LIST_HEAD*sizeof(void*));
memset(2Darray[i], 0, MAX_LIST_HEAD*sizeof(void*));
}
所以我在这里做什么:我为2种指针类型分配了内存。而不是将这两个指针中的每一个指向指针类型内存大小的MAX_LIST_HEAD
倍(您可以假设它是一个指针大小数组-MAX_LIST_HEAD
);之后,我向所有指针写入零,这意味着它们指向NULL。
(如果指针指向0,则意味着它指向NULL。但是,当指针指向NULL时,并不总是意味着它指向0)