c - 如何创建动态大小的 NULL 指针数组?

标签 c pointers malloc

我想拥有指针数组的动态大小,如何使用 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/

相关文章:

c - C 中的数组初始化 — "cannot convert ' < 括号括起来的初始化列表 >' to ' float' 赋值“错误

c++ - 数据结构——指向自身的 C++ 指针

c - malloc指针导致内存泄漏?

c - 如何调整整数数组的大小?

C-AVR-简单PORTB、DDRB、PINB解释

Cygwin html 到浏览器

c - 需要澄清 C 中的 unsigned char *

尽管免费,但 C 内存泄漏

c++ - 指针类定义

c - 有没有一种方法可以可靠地分配与先前释放的 block 相同的内存块,然后访问先前在其中的内容?