亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 63741 | 回復(fù): 61
打印 上一主題 下一主題

月經(jīng)結(jié)貼 -- 《Segmentation Fault in Linux》 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-12-21 17:23 |只看該作者 |倒序瀏覽
寫在前面的話
    最近CU(chinaunix)出現(xiàn)了很多問segmentation fault的帖子,其實這也是個“月經(jīng)貼”了,泡CU幾年,每個月都有人問。為了減少重復(fù)回帖,筆者結(jié)合自己的經(jīng)驗,總結(jié)了SIGSEGV在Linux中產(chǎn)生的機理,并用實際例子概括哪些編程錯誤容易引發(fā)SIGSEGV。由于本人經(jīng)驗有限,文中難免有疏漏和錯誤,請發(fā)現(xiàn)的朋友發(fā)信到xing5820@163.com指正,筆者好即使修改。

內(nèi)容提要
  本文簡單介紹了Segmentation fault發(fā)生的原因,結(jié)合實際例子描述了內(nèi)核向用戶態(tài)程序發(fā)送SIGSEGV信號的流程。文中以實例回答了常見的一些SIGSEGV問題,例如“為什么函數(shù)返回了棧還可以訪問?”、“為什么free()后的內(nèi)存仍然可以使用”、“為什么我遇到的是SIGSEGV而不是SIGILL信號”等。最后筆者結(jié)合自己的經(jīng)驗,列舉了一些預(yù)防SIGSEGV的編程習(xí)慣,供大家參考。SIGSEGV嚴(yán)格依賴操作系統(tǒng)、編譯器、硬件平臺,本文基于Linux、GCC、32bit IA32架構(gòu),但對其他平臺操作系統(tǒng)也有借鑒意義。


大家在閱讀的過程中發(fā)現(xiàn)什么錯誤,或我沒有講到的segfault情況,請及時指出,我好更正。

Segmentation fault in Linux.pdf

309.26 KB, 下載次數(shù): 4418

論壇徽章:
0
2 [報告]
發(fā)表于 2009-12-21 17:28 |只看該作者
下來看看。。。

論壇徽章:
2
青銅圣斗士
日期:2015-11-26 06:15:59數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-07-24 06:20:00
3 [報告]
發(fā)表于 2009-12-21 17:28 |只看該作者

回復(fù) #1 zx_wing 的帖子

沙發(fā)居然被 …… 搶了……
留名

論壇徽章:
2
青銅圣斗士
日期:2015-11-26 06:15:59數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-07-24 06:20:00
4 [報告]
發(fā)表于 2009-12-21 17:39 |只看該作者

回復(fù) #1 zx_wing 的帖子

看了一下……  看來那帖子我是白費口水了……
表面上說接受, 實際上依然是在鼓勵大家編寫不可移植代碼 —— 而且, 并不是為了得到什么實際的好處。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
5 [報告]
發(fā)表于 2009-12-21 17:58 |只看該作者
當(dāng)你的一個需求,標(biāo)準(zhǔn)的方法不能滿足時,只有兩種可能:
1.從一開始的設(shè)計就錯了,才會導(dǎo)致錯誤的需求;
2.你讀過的代碼太少,不知道業(yè)界解決該問題的標(biāo)準(zhǔn)方法是什么。

論壇徽章:
0
6 [報告]
發(fā)表于 2009-12-21 18:04 |只看該作者
原帖由 OwnWaterloo 于 2009-12-21 17:39 發(fā)表
看了一下……  看來那帖子我是白費口水了……
表面上說接受, 實際上依然是在鼓勵大家編寫不可移植代碼 —— 而且, 并不是為了得到什么實際的好處。

哈哈哈,我是接受你看問題的角度,其它的我持保留意見。
至于這篇文章嘛,已經(jīng)不在標(biāo)準(zhǔn)范疇了,我一開始也說,這是非常平臺相關(guān)的

論壇徽章:
0
7 [報告]
發(fā)表于 2009-12-21 18:13 |只看該作者
樓主應(yīng)該寫書啊, 做獨立技術(shù)寫作也不錯…

論壇徽章:
2
青銅圣斗士
日期:2015-11-26 06:15:59數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-07-24 06:20:00
8 [報告]
發(fā)表于 2009-12-21 18:18 |只看該作者

回復(fù) #6 zx_wing 的帖子

char a[] = "hello";
char* p;

for ( p = a+sizeof(a)-2; p>=a; p-- )
      printf("%c\n", *p );

與:

for ( p = a+sizeof(a)-2; p!=a; p-- )
      printf("%c\n", *p );


效果是一樣的: 如果真出現(xiàn)那帖里的情況, 不會越界,不會引發(fā)signal, 而是死循環(huán)。



上面2個版本與下面一個版本相比:

for ( p = a+sizeof(a)-1; p!=a /* or p>=a */; ) {
      --p;
      printf("%c\n", *p );
}

得到的好處就是 : 少寫一行代碼。  就為了這么點好處值得將代碼變得不可移植么?
如果推薦下面一種寫法, 什么煩惱都沒有了, 比如不需要補充這么一句:
筆者無法100%保證,所以大家在實踐中還是各自斟酌吧。



當(dāng)然,會出現(xiàn)回繞的機器只是假象出來的, 也許下面一種寫法的好處永遠(yuǎn)得不到。
我只是反感這么一種風(fēng)氣: 將自己的實踐、 不經(jīng)過嚴(yán)格的論證, 就上升到理論高度, 認(rèn)為那是普遍真理。
我真的不是在說你,  你的文章里至少還有那么一句補充說明, 以說明這種經(jīng)驗的適用范圍。
我其實說的是林銳…… 以及和林銳有相同傾向的一幫人……


算了, 別人寫的代碼是否可移植關(guān)我鳥事 ……   大家愛怎么寫就怎么寫好了……

[ 本帖最后由 OwnWaterloo 于 2009-12-21 18:20 編輯 ]

論壇徽章:
0
9 [報告]
發(fā)表于 2009-12-21 18:35 |只看該作者
原帖由 albcamus 于 2009-12-21 18:13 發(fā)表
樓主應(yīng)該寫書啊, 做獨立技術(shù)寫作也不錯…

哈哈哈,哪兒有那功夫,平時忙的要死,泡個論壇都是忙里偷閑了。
上次不是chen xu過來提到說我泡CU,我差不多都要忘了有好久沒上過了。
寫書真是吃力不討好的事情,就那本在內(nèi)核版打廣告的書,我雖然只寫了一章加一節(jié),但被老板當(dāng)較字工人讓去review全書,那真是一個字一個字得看,一個字一個字的改啊,慘的不行。發(fā)現(xiàn)錯誤還要去請教那些大牛原意是什么的,然后幫他們重寫。還是寫點這種小文好了,全憑興趣,想怎么寫就怎么寫
中國人搞技術(shù)啊,真是為了討生活,除非像老外衣食無憂純粹的"working for fun"差不多。

論壇徽章:
0
10 [報告]
發(fā)表于 2009-12-21 18:45 |只看該作者
先頂貼再看文章是lenky的一貫作風(fēng)。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP