int *p=null; *p=9;是錯誤的!
(1)原因
現代編譯器都對程式可訪問(包括讀、寫)位址空間進行了約束,位址為0(null)是禁止「寫」的。
int *p=null;// p指向位址0
*p=9;// 向位址0寫入內容"9"
你的p已經是null了。。沒有給p指定乙個位址,相當於p是沒有位址的。一般陣列用null或者'\0'來表示結束,而null是不可以賦值的。
(2)修改
int a;
int *p=null;
p=&a; /*p指向變數a的位址*/
*p=0; /*這裡的意思就是把0寫入p指向的記憶體空間,也就是變數a存放的空間,這樣就改變了變數a的值*/
前面int *p=null;就是定義乙個空指標。但後面*p=0;可以正常執行的前提,是這個p指標指向了乙個合法記憶體空間,這樣是可以得。(3)用signal函式捕捉段錯誤
#include#includevoid handler(int s)
main()
結果:
9個錯誤的快取設計實踐
預設的序列化 反序列化器會消耗大量cpu,尤其是對於比較複雜的資料型別。針對你的開發語言和程式設計環境使用更合適的序列化 反序列化機制是有必要的。由於對大物件進行序列化和反序列化的cpu代價非常高昂,在高負載情況下,大量的訪問大物件快取可以很快耗盡伺服器cpu。相反,我們應該將大物件分解成更小的物件...
為什麼void main 是錯誤的
原文 為什麼void main 是錯誤的 main 函式通常是乙個c c 程式的入口點。一次為了讓執行時系統 runtime system 能夠正確地呼叫它,它必須遵守一些約定。現代的c 用如下約定 int main 或者 int main int argc,char argv 再者 int mai...
資料庫設計中的9大常見錯誤
作為資料庫設計人員,當我們負責資料庫專案時,在資料庫設計以及把資料庫部署到生產環境的過程中可能會遇到一些挑戰。其中一些問題不可避免,也無法控制。但是,其中相當一部分可以追溯到資料庫設計本身的質量。我們在初步階段所做的決定會對資料庫最終的工作情況有深遠的影響。如果我們要建一所房子,我們不會聘請一位工程...