[问题] 关于free()不同型态的指标

楼主: Archer55b6 (Archer55b6)   2018-12-22 11:32:39
开发平台(Platform): Win10
编译器:gcc in minGNU for windows + NotePad++
额外使用到的函数库(Library Used): 无
问题(Question):
在练习资料结构的graph时,用到一个destroy_graph的函数,
功能是将整个graph所占用到的空间都free掉
但由于引入的dataPtr 是用void*,想请问若不管使用者丢进来的
dataPtr是指向什么变量型态,直接在graph的副程式中free(dataPtr),
如此会造成memory leakage吗?
编译器又是如何去判定free(ptr) 中的这个ptr是指向什么资料型态、
该free多少单位的memory呢?
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
http://codepad.org/FET3H7It
补充说明(Supplement):
作者: cole945 (跶跶..)   2018-12-22 20:02:00
1.free本来就吃void*, 会leak岂不砂锅大的bug2.编译器本身不管,memory allocator本身自已实作的问题3.依实作,在C的malloc/free,其实只要能想办法知道addr与size的关系就好了. 最智障就查表, 通常是前面塞headerheader通常是串回memory pool, 一些use/free list之类的有兴趣可以找 dlmalloc 的实作, 最单纯

Links booklink

Contact Us: admin [ a t ] ucptt.com