還只會寫廢扣。玄葉
[廢]
不知道是不是因為這幾天都在寫和修malloc/free的bug

我竟然連做夢都夢到一行行扣,每一步該如何去malloc一條記憶空間和怎麼去free這些空間

這算是邊做夢邊練習嗎

如果確實對提升能力有用,我可以繼續夢下去的
還只會寫廢扣。玄葉
好像有想通什麼
等等試試看
還只會寫廢扣。玄葉
還只會寫廢扣。玄葉
我最近和朋友聊到我在學習上遇到的困難和卡住的地方,朋友建議我睡覺

這建議好像還真的是有理有據的
NEUROSCIENTIST: How To ACTUALLY LEARN

腦神經學家Andrew Huberman解釋大腦在學習的時候要通過兩種階段來完成神經迴路的連結

第一階段是將注意力放在學習,在這個階段神經系統會被刺激,新的(可能會用到的)神經網路會被刺激和產生

第二階段是在放鬆的狀況下,大腦開始回放新接收的資訊,強化新產生的神經網路
還只會寫廢扣。玄葉
然後我今天最大的收穫就是把我的macOS的vim設定好了
因為macOS的vim默認設定只有基本的黑白,沒有換行自動縮排,沒有顯示行數號碼

調整一些設定會讓寫扣的過程比較容易

下次也要找時間研究vscode, 一個一個來吧
還只會寫廢扣。玄葉
好吧 我確實減少了使用malloc的數量
但沒解決我想解決的問題

難不成真要塞一個 str[4242] 下去嗎
還只會寫廢扣。玄葉
記錄一下問題:

我有兩個 pointer
1. 指向要輸出的string (這個指針在呼叫後 free())
2. Static pointer 指向下一行到EOF的string (直到EOF回傳NULL才 free())

如果每次我呼叫函式都是一直讀到EOF
那2個指針都會正常的free

但如果我只呼叫幾次,沒有到EOF
2 就不會 free, 因為他還儲存著下一行到EOF的資料

問題很清楚
但我不知道怎麼在中間free它
還只會寫廢扣。玄葉
結論是不能塞 str[]
我讓它爆炸了
還只會寫廢扣。玄葉
拆開成兩個函式也會出問題
如果在另一個函式裡宣告 str[]
compiler會warning ,因為我想回傳的是一個local variable
還只會寫廢扣。玄葉
我也沒能成功把 static char *tmp 改成 static char tmp[BUF_SIZE]
主要是如果需要把它變大會出問題
還只會寫廢扣。玄葉
怎麼辦呢
回傳的東西就是malloc後的產物

想把它變成不是malloc的產物也失敗
還只會寫廢扣。玄葉
我看見了一個可能可行的方法

宣告 static char *tmp[BUF_SIZE]; (因為BUF_SIZE 最小一定是1)

最後把我的output 存在 tmp[0] 裡面
Copy 內容到 tmp[1]
然後free我的tmp[0]

好像可行?
還只會寫廢扣。玄葉
放貓貓冷靜冷靜 https://images.plurk.com/1JDB3gExAD0XJ1VyWceIxu.jpg
想想怎麼做...
還只會寫廢扣。玄葉
好吧 不行

原因是因為local array 要傳到其他函式都會爆炸
還只會寫廢扣。玄葉
.... 還是我做兩次
一次是開頭把local 轉成 dynamic ,讓它可以在函式之間順利跑起來
一次是尾巴,把dynamic 轉成local (heap) 然後 free掉dynamic
還只會寫廢扣。玄葉
不對... local的話...怎麼處理static char 需要記著讀到哪一行的問題
載入新的回覆