關於PAT段錯誤(由STL引起的錯誤)

2021-09-26 04:47:07 字數 420 閱讀 7590

假如是用vector作為陣列,當執行以下的語句時就會近似於死迴圈,從而引起段錯誤。

讀者可以自行模擬一下**:

#include#includeusing namespace std;

vectora;

int main()

原因是size()函式返回的是無符號型的數,當a為空時,此時二進位制數值大小不是-1,而是被當做無符號整型處理,0000 0000h(真值為0) + 1111 1111h = 2^32 - 1。必然發生錯誤。解決辦法是寫成 i + 1  < a.size(),或者i < (int) a.size() - 1即可。

其他slt的也是一樣的, 引用了size函式的時候要小心。其他就是陣列越界很平常的情況了,大多數都是不滿足具體題目要求,在此就不贅述了,可以參照本部落格內其他的pat題解。

由pthread create引起的段錯誤

一般執行緒的結束是由程序內的其他執行緒來結束的,呼叫pthread cancel.但是需要考慮到被結束執行緒的性質,一方面,執行緒是可被結束,也可無法結束,即不響應該訊號 另一方面,如果執行緒是可被結束的,那麼結束的方式有兩種,一種是同步,當執行緒收到這個訊號的時候先掛起,等到下乙個取消點時再響應該...

由JS注釋引起的JS錯誤

線上乙個js函式失效,但是在本地除錯是正常的。在排除環境問題之後,我開始想js本身的問題。兩個js的區別 線上的js是壓縮過的,確切的說是淨化過的,本地的是原始碼。將本地的js也淨化一下,然後在本地用淨化的js跑,也出現跟線上一樣的情況,同時我發現有js錯誤 is not defined,但是這個f...

ERROR C 字元指標引起的段錯誤

問題 程式編譯通過,執行異常終止。進入除錯模式,報段錯誤。分析 逐行除錯,在為char指標所指內容修改時出錯。原因 char c abc 此時,無法根據指標來修改字串內容。example 1 char str 12 hello 字串用陣列開闢的,它是可以改變的變數。char p str p h 改變...