我想拥有指针数组的动态大小,如何使用 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。我做错了什么?
最佳答案
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)
关于c - 如何创建动态大小的 NULL 指针数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51580277/