1. 程式人生 > >Linux下執行C++程式出現“段錯誤(核心已轉儲)”的原因

Linux下執行C++程式出現“段錯誤(核心已轉儲)”的原因

轉載自:http://www.linuxidc.com/Linux/2015-09/122966.htm

今天Linux下寫程式出現了“段錯誤(核心已轉儲)"的問題,查了一下資料,加上自己的實踐,總結了以下幾個方面的原因。

1.記憶體訪問出錯

這類問題的典型代表就是陣列越界。

2.非法記憶體訪問

出現這類問題主要是程式試圖訪問核心段記憶體而產生的錯誤。

3.棧溢位

Linux預設給一個程序分配的棧空間大小為8M。c++申請變數時,new操作申請的變數在堆中,其他變數一般在儲存在棧中。

因此如果你陣列開的過大變會出現這種問題。

首先我們先看一下系統預設分配的資源:

ulimit -a

可以看到預設分配的棧大小為8M。

如果真的需要更大的棧空間,可以用指令ulimit -s XXXX來申請更大的棧空間。

linux