這裡的這些小問題就是我們平時容易犯到,如果以前沒有犯過嚴加防範,反正一定要注意,這幾類很經典的.(入門級)
1.
void test()
這段**首先要知道,strncpy的用法,以及它的引數,char *strncpy(char *dest, const char *src, int n)
,把src所指向的字
符串中以src位址開始的前n個位元組複製到dest所指的陣列中,並返回dest。
現在我們來看看字元的內容「hello\0」,因為/0一般不
會寫出來,所以應該是6個位元組,並不是5個位元組。
一定要熟悉函式的引數,和原型才能用,否則容易出現問題。 2.
#define buffer_size 256
void getmemory(char **ppszbuf)
ppszbuf = (char*)malloc(buffer_size);
return;
}void test()
這道題,我們先捋一下,他的意思就是讓pszbuf指標指向一段開闢好的空間,然後再呼叫strcpy將
字串傳進空間裡,想法不錯,
但是函式體內問題很大,大家都知道,函式體內的都是臨時變數,所
以當你使用完畢這個函式也不例外裡面除了malloc出來的空間
被存入堆中,剩下的空間都歸還給操作
系統了,所以這個時候,用來記錄你開闢的空間的指標ppszbuf也被釋放了,也就造成了記憶體
洩漏。還有,當你走到test函式中strcpy中的時候時,pszbuf指標並沒被改變還是為空,這時候就出現了
記憶體訪問越界,
程式崩
潰。若是想改正,你可以將getmemory函式中的ppszbuf指標return出來,這時
候你就有開闢空間
的位址了。
3.
unsigned long func_8(unsigned long ulcount)
return ulsum;
}
這道題呢,我們只看到乙個迴圈,他的意思大家應該很容易明白,他想算ulcount從0加到它本身的值,
但是我們看乙個數字之前應
該知道他的型別,這個乙個無符號長整型的數字,這種型別是沒有負數的,
如果他到0的時候,在減一,就會變成型別可以表示的最
大值4294967295 也就是 (2^32 - 1),很明顯
這個迴圈
就是乙個死迴圈,所以我們在處理問題是一定要先看好他的型別,型別很重
要! 4.
char* getstr(char *p)
void main()
return;
}
這個題呢,其實很容易找到的,我們看啊,函式是返回p指標,把那段空間算是返回來了,但是呢
沒有人接受他!!!,main函式中
從始至終str沒有接收過那段空間,它在函式中雖然被定義了,
但是那是形參
啊,出了函式就不認賬了,形參出了函式會釋放,返回
來的p,你又沒有接收,str
還為空,所以呢,
記憶體訪問越界,str裡面啥都沒有,你還要輸出,所以就有問題了。
記住,形參是實參的乙份臨時拷貝。
5.
void varinit(unsigned char *pucarg)
void test()
這個題還是型別的問題,這樣吧,我畫一張圖說明一下問題。
現在我們看出來當你要列印出 ulgloba,那你就要做好心理準備了,因為它列印出來絕對不是1.
原因圖里已經很清楚了
6. aaa的初衷是gui_show_image這句**的執行加上限制條件.
gui_push_clip();
#ifdef aaa
if (show_status = mmi_ture)
#endif
#ifdef bbb
gui_show_image(x, y, image_id);
#endif
gui_pop_clip();
updata_dt_display();
.......
這道題跟巨集帶了一點關係,巨集我以前寫過一大串,這道就簡略說了,我們首先看到aaa 和 bbb是分開定義的,但是
這樣做就有可能
使bbb的巨集定義失效,應該讓他們的內容寫在乙個巨集中。
因為我學習c語言也沒多久,算不上好的,所以有什麼不足
多謝指出來,先寫這麼多,以後應該會有補充。
2020 12 29 常見R語言執行bug
r語言執行bug error in function classes,fdef,mtable unable to find an inherited method for function select for signature data.frame 常在使用dplyr包時出現這種情況 data ...
C語言特性BUG
1.關鍵字const並不能把變數變成常量,在乙個符號前加上const限定符只是表明這個符號不能被賦值。也就是說它的值對於這個符號來說是唯讀的,但它並不能防止通過程式的內部的方法來修飾這個值。const最有用之處就是用它來限定函式的形參。這樣該函式將不會修改指標所指的資料。const和 的組合通常只用...
常見bug分類
2020年 第三期 python全棧測試開發 網路課程於4月下旬開班 感興趣的小夥伴戳此圖示qq聯絡 作為測試新人,很多學員在工作中不知道從 進行下手進行測試,即使發現了問題也不確定是不是bug,從而導致非問題 重複bug等現象,現根據測試過程中比較常的問題進行分類,並針對這些問題怎樣進行驗證提出了...