作者:
mouwat (QQ)
2020-09-02 10:47:23不好意思又來麻煩大家指點
題目是codewar使用雙重指標的問題
使用C語言
https://www.codewars.com/kata/534d2f5b5371ecf8d2000a08/train/c
我查詢雙重指標的使用方法後試著寫了卻出不來結果
參考內容
https://imgur.com/B2gM9rm.jpg
寫了以下的code
https://ideone.com/sQjKpG
顯示結果
https://imgur.com/kfjG0FH.jpg
之前發生類似的問題通常是宣告範圍有問題...
有請寫C++朋友幫看一下 但他說不太熟這部分
煩請指點迷津
作者:
Lipraxde (Lipraxde)
2020-09-02 11:24:00你看看人家 tmp malloc 寫在哪?你寫在哪?啊...我看錯惹...我看題目的意思應該是要你幫每個 row 都 allocate 一塊空間,不過你是 allocate 一整塊。所以在它 free memory 的階段會出錯
因為他test的部分free是每條row分開free的你直接alloc一整塊出來就會變成double free
作者:
Lipraxde (Lipraxde)
2020-09-02 12:29:00題目的 note 意思就是要你這樣 allocate memory。並不是 double free。第一個 row 以外的 rows 指到的是tmp 加一個偏移量的位置,free 的時候由於這些 pointers 不是 allocate 出來的,所以會出現 invalid pointer的錯誤
啊對,這個不算double free,感謝指正XD
需要加的不是 C 語言malloc()/calloc() 完以後會回傳的指標, 而這些指標就是需要給 free() 的引數, 所以呼叫次數先要對得上才行, 這是大原則.
作者:
Lipraxde (Lipraxde)
2020-09-02 17:56:00你可以自己寫幾隻程式後用 valgrind 跑,valgrind 會告訴哪邊對記憶體的操作有問題
為什麼你在呼叫函式以前不先看它的說明, 而是靠別人寫的程式碼來猜用途?
作者: reemir 2020-09-22 10:06:00
什麼叫做雙重指標?有這種東西嗎?