因此,我可能无法很好地表达出自己的歉意。我对此很陌生,并且在不断学习。我正在寻找一个结构体,该结构体具有指向其中另一个结构体的结构体指针。检查下面。
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所在的内存。再次,这是我第一次在此处发布问题。我希望香港专业教育学院能够覆盖我的所有基础,并且我正确地询问了我。谢谢。
答案 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;
}