c - 初始化包含指向另一个结构的结构指针的结构
问题描述
所以我提前为可能无法很好地表达这一点而道歉。我对此很陌生,并且正在学习。我正在寻找初始化一个结构,该结构具有指向其中另一个结构的结构指针。检查下面。
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 所在的内存。这也是我第一次在这里发布问题。我希望我已经涵盖了我所有的基础并且我问得正确。谢谢你。
解决方案
您正在初始化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;
}
推荐阅读
- android - 如何更改 CardInput 小部件提示文本中的语言(条纹)
- c++ - c++:获取类中字段输入的问题
- reactjs - 如何使用 React 正确处理复选框?
- mysql - 数据库系统自动为哪种类型的表属性创建索引?
- macos - 内部和自制安装的apache之间的冲突
- python - Python dict到带参数的变量
- r - 在 data.table 中查找与表头相同的行
- javascript - 多个文件下载进度指示器
- python - Python Django:Pillow 安装有效,但 django 无法识别
- reactjs - 我在我的 react js 网站中使用 @react-pdf/render 想要在 react-pdf 中将其呈现为 HTML