【发布时间】:2015-07-20 14:51:17
【问题描述】:
我应该如何存储从malloc 返回的pointers?我有一个小型解析器,它允许在源文件中嵌套includes,这意味着第一个源文件可以包含foo,然后foo 可以包含bar 等等。
此功能迫使我在打开新文件时保持分配给每个文件的内存不变——因此分配新的内存,并继续解析它们,直到打开最后一个文件并解析最后一行,然后我可以从最后打开的文件开始freeing 内存。
我首先想到的是实现一个堆栈来跟踪分配的内存。当我这样做是为了学习 C 时,我开始阅读如何存储来自 malloc 的返回指针,但是围绕“如何投射 malloc”之类的类似主题有很多噪音,我找不到任何有用的东西。
然后我检查了malloc 文档,它说malloc 返回void 指针,但据我所知,通常不建议使用 void 指针,因为您无法取消引用 void 指针。
我认为我不需要取消引用 malloc 指针,因为我只需要将它们传递给 free 就可以了,但是我想知道是否有任何众所周知的解决方案将这些指针存储在我的堆栈中?
目标只是通过堆栈跟踪分配的内存,因此可以随时弹出并在需要时释放指向最近分配的内存的指针。
【问题讨论】:
标签: c pointers memory-management malloc void-pointers