c - 将内存分配给包含结构的节点

标签 c struct linked-list malloc

假设我有一个来自双向链表的节点

typedef struct node
{
struct node *pPrev;
struct node *pNext;
struct record *data;
}Node;

以及以下名为 record 的结构,该结构在该命名歌曲长度内

typedef struct record
{
    char *artist;
    char *album;
    char *song;
    char *genre;
    struct songlength *length;
    int played;
    int rating;

}Record;

typedef struct songlength
{
    int mins;
    int secs;
}SongLength;

我将如何为这样的事情分配内存。我知道如何为列表的每个节点中的单个 int 执行简单的 malloc/make 节点。

 Node *makeNode (int newData)
{
    Node *pMem = NULL;

    pMem = (Node *) malloc (sizeof (Node));

    pMem -> data = newData;
    pMem -> pNext = NULL;

    return pMem;
}

在目前的状态下,我不知道该怎么做。因为我所有的尝试都导致了一大堆困惑的内存。

最佳答案

不要强制转换 malloc() 和 family 的结果。

pMem = malloc (sizeof (Node));// It is for first structure.

pMem ->data=malloc(sizeof(struct record));

pMem->data->lenght=malloc(sizeof(struct songLength));

首先分配您为 pMem 分配内存。因此,数据是一个结构,因此必须为其分配内存以访问该结构成员。

关于c - 将内存分配给包含结构的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28381476/

相关文章:

c++ - 指针变量的地址

在预处理器指令中组合 ## 和 _type

c - 使用 C 中的 pthread 库为大数组开发合并排序

ios - 尝试在indexpath.row处执行 "swipe left to delete "时出现UITableView SIGBRT错误

c - 打印出特定间隔之间的完美数字

ruby-on-rails - 调用一个新结构并获取列出的所有访问器

c - 结构中可变大小的自引用

c++ - 如何在链表中显示特定节点?

c - 指向结构体的指针数组

java - 将节点添加到指定索引Java的双向链表时出现NullPointerException