我已經在一個簡單的C程序中聲明瞭兩個變量(一個全局變量和其他局部變量),除了兩個具有不同大小數據的數組之外。在撥打return 0;
之前,我使用strcpy()
例程導致緩衝區溢出。我在終端屏幕上看到分段故障錯誤。我知道在收到這個SIGSEGV
信號之後,系統會收集進程內存的核心轉儲並終止該進程,但是系統會清理堆棧/堆內存和其他部分(如BSS段)的清理(清零)文本段等?我猜,在一個進程正常結束的時候,系統會清理內存(零),但我不太確定。SIGSEGV默認處理程序在進程終止之前是否清理堆棧/堆內存?
我正在使用Ubunutu 10.12
和gcc
來運行程序。
我一直在尋找互聯網幾個星期,但我找不到任何可靠的來源(如Linux文件)的任何鏈接,其中說,Linux是這樣做的。你能提供一些鏈接嗎? – Junaid