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
。想一想。在我看来,其中一个几乎是正确的(这不是任何分配)。