假如再有一次機會的命題作文
問題程序:

struct list {
char *item;
struct list *next;
}
/* 這里是main 程序*/
main(argc, argv)
{ … }
缺少的一個分號使main() 被定義為返回一個結構。由于中間的注釋行, 這個聯系不容易看出來。因為一般上, 返回結構的函數在實現時, 會加入一個隱含的返回指針, 這個產生的main() 函數代碼試圖接受三個參數, 而實際上只有兩個傳入(這里, 由C 的啟動代碼傳入)
拓展
Core,又稱之為Core Dump文件,是Unix/Linux操作系統的一種機制,對于線上服務而言,Core令人聞之色變,因為出Core的過程意味著服務暫時不能正常響應,需要恢復,并且隨著吐Core進程的內存空間越大,此過程可能持續很長一段時間(例如當進程占用60G+以上內存時,完整Core文件需要15分鐘才能完全寫到磁盤上),這期間產生的流量損失,不可估量。
凡事皆有兩面性,OS在出Core的同時,雖然會終止掉當前進程,但是也會保留下第一手的現場數據,OS仿佛是一架被按下快門的相機,而照片就是產出的Core文件。里面含有當進程被終止時內存、CPU寄存器等信息,可以供后續開發人員進行調試。
關于Core產生的原因很多,比如過去一些Unix的版本不支持現代Linux上這種GDB直接附著到進程上進行調試的機制,需要先向進程發送終止信號,然后用工具閱讀core文件。
在Linux上,我們就可以使用kill向一個指定的進程發送信號或者使用gcore命令來使其主動出Core并退出。如果從淺層次的原因上來講,出Core意味著當前進程存在BUG,需要程序員修復。
從深層次的原因上講,是當前進程觸犯了某些OS層級的保護機制,逼迫OS向當前進程發送諸如SIGSEGV(即signal 11)之類的信號, 例如訪問空指針或數組越界出Core,實際上是觸犯了OS的內存管理,訪問了非當前進程的內存空間,OS需要通過出Core來進行警示,這就好像一個人身體內存在病毒,免疫系統就會通過發熱來警示,并導致人體發燒是一個道理(有意思的是,并不是每次數組越界都會出Core,這和OS的內存管理中虛擬頁面分配大小和邊界有關,即使不出Core,也很有可能讀到臟數據,引起后續程序行為紊亂,這是一種很難追查的BUG)。
說了這些,似乎感覺Core很強勢,讓人感覺缺乏控制力,其實不然。
【假如再有一次機會的命題作文】相關文章:
假如再有一次機會作文02-07
【精選】假如再有一次機會作文12-10
假如再有一次機會作文12-16
假如再有一次機會初中作文03-25
[必備]假如再有一次機會作文04-07
假如再有一次機會作文(推薦)12-13
假如再有一次機會作文(精華)05-21
(通用)假如再有一次機會作文12-10
假如再有一次機會作文(精)12-11
假如再有一次機會作文(精選18篇)11-27
- 相關推薦