C 初始化包含指向另一个结构的结构指针的结构

C 初始化包含指向另一个结构的结构指针的结构,c,struct,initialization,C,Struct,Initialization,因此,我为可能无法很好地表达这一点提前道歉。我对这一点还很陌生,并且在不断学习。我希望初始化一个结构,其中有一个指向另一个结构的结构指针。检查下面 struct GraphicElement { char* fileName; struct GraphicElement* pNext; }; struct RasterGraphic { struct GraphicElement* GraphicElements; }; 我正在编写函数来添加或删除图形元素,但在

因此,我为可能无法很好地表达这一点提前道歉。我对这一点还很陌生,并且在不断学习。我希望初始化一个结构,其中有一个指向另一个结构的结构指针。检查下面

struct GraphicElement {
    char* fileName;
    struct GraphicElement* pNext;
    };
struct RasterGraphic {
    struct GraphicElement* GraphicElements;
};
我正在编写函数来添加或删除图形元素,但在此之前,我调用了一个函数,我想在其中进行初始化,这正是我遇到的问题

int main(void)
{
    char response;
    BOOL RUNNING = TRUE;
    struct RasterGraphic RG;
    _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
    InitRasterGraphic(&RG);
}
我在这里调用init,下面将是我的尝试

void InitRasterGraphic(struct RasterGraphic* pA)
{

pA->GraphicElements = malloc(sizeof(struct GraphicElement));
pA->GraphicElements = 0;
return; 
}

我尝试过许多其他的事情,但似乎没有一件能满足我的愿望。我想初始化一切。我有另一个打印元素的函数,但它崩溃了,我得到一个错误,它无法读取fileName和pNext所在的内存。这也是我第一次在这里发帖。我希望我已经涵盖了我所有的基础,并且我问得很恰当。谢谢。

您在
malloc
之后立即将
pA->graphicselements
初始化为
NULL
,这是错误的,会导致内存泄漏

也许你想试试下面的方法

void InitRasterGraphic(struct RasterGraphic* pA)
{
   pA->GraphicElements = malloc(sizeof(struct GraphicElement));

   if (pA->GraphicElements == NULL) return;

   pA->GraphicElements->pNext = NULL;
   pA->GraphicElements->fileName = NULL;

   /** or
    pA->GraphicElements->fileName = malloc(sizeof(char)*(somelength));
    */

   return; 
}

首先分配
pA->graphicselements=malloc(…)
,然后立即执行
pA->graphicselements=0
。想一想。在我看来,其中一个几乎是正确的(这不是任何分配)。