Linux下運行C++程序出現"段錯誤(核心已轉儲)"的原因


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

  1.內存訪問出錯

    這類問題的典型代表就是數組越界。

  2.非法內存訪問

   出現這類問題主要是程序試圖訪問內核段內存而產生的錯誤。

  3.棧溢出

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

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

    首先我們先看一下系統默認分配的資源:

    

  1 ulimit -a

   

   可以看到默認分配的棧大小為8M。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM