寫壞c程式的幾大訣竅
如果你常常按照下面方式寫程式,可以保證你的程式經常出錯,你也經常頭疼。
1) 根本不管程式的格式,把程式寫得老師也看不懂(自己當然更看不懂)。
用格式迷惑自己也是弄壞程式的絕招。例如:
if (a > 0)
if (x == y) ;
else
請自己分析這到底是什麼意思。
2)不關心scanf或者printf中格式串和對應引數型別匹配的問題。例如(假設x, y是double型別,n是int型別)寫:
printf("%d, %f", x, n);
scanf("%d %f", &x, &y, &n);
這樣可以保證輸入輸出總出現莫名其妙的問題,而且你和別人都找不到原因。
3)寫scanf時,在接收輸入值的變數名之前不寫&符號。
這樣做常常還可以順便摧毀你所使用的計算機系統,給自己再多找點麻煩,有自製病毒之妙。
4)寫注釋時隨便地忘記幾個結束符號。例如:
x = y + 1; /* ha ha ha
z = x * 2; /* fine fine fine */
這樣可以保證編譯程式「按照你的指示」把你的一段**吃掉。
5)在比較的時候用 = 代替 ==。例如:
if (x = y)
z = x + 5;
這可以保證x和y一定相同,而是否執行賦值就看你的運氣了。
6)定義區域性變數後,不初始化就使用。例如:
int fun(int n)
如果對指標變數這樣做,常可以帶來隱秘的破壞效果,讓最有經驗的人也難找到毛病的根源。例如寫:
int fun(int n)
這樣做有時可以順便摧毀你用的計算機系統,再給自己多找點麻煩。
7)函式定義為有返回值的,但(有時)卻不去寫return(101-102頁)。
這樣做可以保證你的程式不時出現古怪行為。
8)不關心變數的範圍,例如對迴圈次數很多的變數用 short 型別做迴圈等。
這樣做可以得到不明不白的結果;有時還可以使程式永不停止,直到你用的計算機累死為止。
9)用sizeof運算子去計算函式的陣列引數的大小,或者計算字串的大小。
這樣做一般可以保證計算結果錯誤,出現的問題難以預料。
10)不寫函式原型說明,採用過時原型說明形式(103-107頁),或者故意寫錯誤的原型說明。
這樣做一般都能騙過編譯程式,阻止它幫助你檢查程式錯誤,使你自己麻煩多多。
11)定義帶引數巨集的時候盡量節約括號,省得寫起來麻煩。
這樣可以保證在使用巨集的地方不時地出現隱含錯誤,就像埋下的地雷,檢查源程式也很難發現。
C 如何排查記憶體寫壞
mmap 例子c 記憶體寫壞問題,有很多原因造成,包括野指標 指標越界 併發場景等,出現很難排查,有很多記憶體分析工具可以使用,比如valgrind1 mprotect是一種系統呼叫,mprotect 簡單而言,mprotec可以指定一塊記憶體保護為指定的模式,比如唯讀模式,這樣當有場景破壞該模式的...
如何評價軟體寫的好還是壞?
軟體自身是一種固化的思維,因此從本質上來看,軟體是不可度量的。但這並不意味著軟體不需要度量,而只是說軟體中的度量大多都有一定限度。應用各種度量資料的時候一旦跨過這種限度,結果就會適得其反。對軟體 直觀可見的質量屬性 的度量比較簡單,比如 bug率,效能等,這裡就不提了。這裡主要關注的是軟體的內在的,...
c 壞的程式設計習慣
摘自 1 在c 程式設計中,字元型型別是最容易處理出錯的地方,代價是非常昂貴,在.net framwork中,字串是乙個相當特別的引用型別,string本省就是乙個不可繼承的密封類,但是它具有了值型別所應用的特點,但是它在clr中內 存還是儲存於託管堆之上,也就是說,當我們每次定義乙個字串型別的時候...