由於濫用void 引發的bug

2022-04-29 14:54:06 字數 639 閱讀 1384

我一向認為在寫**時,void *濫用是有問題的,在最近的一次**中, 有類似這樣一段**:

1

int send(void *buff, unsigned long

size);23

int xx_func(char *buff, unsigned long

size)

4

int send(unsigned char *buff, unsigned long

size);

int xx_func(char *buff, unsigned long

size)

其實前兩種編譯在進行引數檢查時,都會報警的,只有寫成第三種形式,編譯器才會真正通過,如你寫成第三種形式時不會去看buff, 到底是什麼,那我也沒話說了。當然如果你忽略警告我也沒啥可說的了哈哈,我只想說應該盡可能的去利用編譯器來發現潛在bug.

注:從語義上來說,send(void *buff, unsigned long size)會使人疑惑, 這個size是byte? word? dword?, 如果是unsigned char *,那size當然就是byte, 如果是unsigned short *, 那size當然就是word.(x86 platform)

濫用執行緒池引發的問題

前不久,由於組內乙個同事濫用執行緒池造成了一起比較嚴重的線上故障。現在記錄一下,防止自己以後犯同樣的錯誤。a介面是用來返回所有型別的光線資料的同步介面。某種特定的光線x3用了乙個執行緒池 執行緒池裡面有兩個執行緒,將乙個任務拆成兩個來同時進行,等兩個執行緒的任務完成後合併資料並返回 來加快光線x3的...

手機休眠引發的重大Bug

for do something 複製 looper迴圈中取訊息會呼叫messagequeue的next方法,接下來看next方法 final long now systemclock.uptimemillis do something if msg null else else msg.next ...

記一次由於快取導致的bug

bug描述 有一張資料庫表儲存的是 值日員工資訊,有時候可能一次性錄入1個月的資料 有時候也可能隔了很多天沒有錄入資料,也就是說這個錄資料不是很規律。bug現象 測試人員發現,上三亞地區能正常顯示當天值日員工資訊,但是珠海地區卻不能正確顯示當天值日員工資訊。而資料庫上實際是有珠海地區值日員工資訊的。...