難得已經考完過了一個星期,可是還是沒感覺有放鬆到,昨天想要趕快把ogg的standard I/O拿掉,一直在改程式、debug弄到晚上一點回寢室洗個澡,回去lab繼續奮戰,結果還是卡死在memory menagement的問題,還不就是malloc、calloc、free、realloc這幾個function的問題,雖然前三個都已經寫出來了,只是free都是假的,但好歹MP3跟H264都可以porting到UniCore上了,可是第四個realloc還真他媽的難懂,其實是因為我不會看英文。
  搞到了兩點多,心中有兩三種結論,後來問了風哥才真正把答案釐清,在realloc之前,要先malloc一塊記憶體空間,然後有了memory address,然後要重新配置空間時,在傳入新的size跟原本的memory address。
void * realloc( void *ptr, size_t size)
1.size = 0, return NULL
2.size < sizeof(*ptr), return ptr但大小只有size,後面的部份free
3.size = sizeof(*ptr), return ptr,不作改變就回傳
4.size > sizeof(*ptr), return new ptr,重新malloc一塊size大小的空間且回傳mem_add
ps.以上sizeof(*ptr)的寫法是不成立了,因為沒這種東西,只是方便了解內容而已
  可是我沒辦法從傳進來的*ptr去得知他媽的之前malloc多大的size出來,所以只好改寫成要多傳一個old size進來比較,可是在2.的情況也不小得怎麼只free大於size的部份,所以寫了一個很牽強的版本出來測試,結果發現還是死,一個是死在my_free(軒軒版),一個是死在my_malloc(志文版),所以只好拿陳長官的版本出來k懂他,再看怎麼利用了。  這樣一夜沒睡,早上趴了一下,meeting後在吃個午餐救回寢室睡覺了,可是睡沒多久又作怪夢,夢到我用頭去撞小齊的左臉,還撞到腫得很嚴重,腫了一大塊肉還垂下來,真噁心,害我睡到一半被嚇醒,也才躺一個小時多,子評就打電話來問要不要練球了,然後賴了一下床還是跑去練球,練玩晚上買火鍋料回寢室煮,這次好像買太多,煮到後來大家戰鬥力都沒了,還剩滿多東西的。然後又看著他們打了兩場AOK,也差不多11點多了。
  晃到現在也差不多該睡了,打算明天早起來練球,然後再去LAB做事。加油加油!只要在抽一些時間念預官的考古題就很完美了。
創作者介紹
創作者 soarlin 的頭像
soarlin

每天都有新鮮事

soarlin 發表在 痞客邦 留言(0) 人氣()