[問題] 關於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