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

时间:2018-09-22 14:16:06

标签: c struct initialization

因此,我可能无法很好地表达出自己的歉意。我对此很陌生,并且在不断学习。我正在寻找一个结构体,该结构体具有指向其中另一个结构体的结构体指针。检查下面。

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);
}

我在下面进行初始化调用是我的尝试。

void InitRasterGraphic(struct RasterGraphic* pA)
{

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

我尝试了许多其他操作,但似乎都无法与我要执行的操作一起使用。我想初始化一切。我有另一个打印元素的函数,但是它崩溃了,并且出现一个错误,它无法读取文件名和pNext所在的内存。再次,这是我第一次在此处发布问题。我希望香港专业教育学院能够覆盖我的所有基础,并且我正确地询问了我。谢谢。

1 个答案:

答案 0 :(得分:1)

pA->GraphicElements之后,您正在将NULL初始化为malloc,这是错误的,并且会导致内存泄漏。

也许您想尝试以下方法。

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; 
}