假设我有一个来自双向链表的节点
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/