今天寫程序出現了“段錯誤(核心已轉儲)"的問題,查了一下資料,加上自己的實踐,總結了以下幾個方面的原因。
這類問題的典型代表就是數組越界。
出現這類問題主要是程序試圖訪問內核段內存而產生的錯誤。
Linux默認給一個進程分配的棧空間大小為8M。c++申請變量時,new操作申請的變量在堆中,其他變量一般在存儲在棧中。
因此如果你數組開的過大變會出現這種問題。
首先我們先看一下系統默認分配的資源:
1 ulimit -a
可以看到默認分配的棧大小為8M。
如果真的需要更大的棧空間,可以用指令ulimit -s XXXX來申請更大的棧空間。