1. 程式人生 > >“段錯誤 (核心已轉儲) ”一種可能原因及其解決方法

“段錯誤 (核心已轉儲) ”一種可能原因及其解決方法


終端在執行的時候總是出現

“段錯誤 (核心已轉儲) ”


棧空間用來儲存陣列等資料,那麼段錯誤就應該是我儲存的陣列超過了它所在段的大小,於是在的程式執行的過程中一到跟大陣列相關的步驟就會出現段錯誤的提示(SIGSEGV: Segmentation fault)。

     linux下應用  ulimit -a 命令檢視當前棧空間大小,得到:

     8012  

     即我的系統下棧空間應該為8M,而可以自己算下自己定義的陣列大小,發現我的陣列每個大概3M多,而我的陣列個數也大於3個,我的gdb中除錯的過程中也恰巧是在第三個大維數陣列那出現的問題,我的陣列的確越過了stack段的邊界,出現了錯誤。

▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂

     如何解決這個問題呢?

     我用

ulimit -s  102400

     將棧的大小改為100M(這回可夠用了),然後執行程式或者debug,程式就能正確運行了。

    我在其他人的帖子裡看見一些人說用vector容器可能會更好,自己還沒有去深入學習,這是我下一步個工作吧,今天先把怎麼解決這個問題的過程帖子這裡。希望可以和大家交流下關於段錯誤的問題。

相關推薦

錯誤 (核心) ”可能原因及其解決方法

終端在執行的時候總是出現 “段錯誤 (核心已轉儲) ” 棧空間用來儲存陣列等資料,那麼段錯誤就應該是我儲存的陣列超過了它所在段的大小,於是在的程式執行的過程中一到跟大陣列相關的步驟就會出現段錯誤的提示(SIGSEGV: Segmentation fault)。      linux下應用  u

orbslam2錯誤 (核心)

rosrun ORB_SLAM2 Mono /home/qinhaidong/SLAM/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/qinhaidong/SLAM/src/ORB_SLAM2/Examples/Monocu

錯誤 (核心) 字元指標 ubuntu

#include<stdio.h> int main() { char *p=""; scanf("%s",p); printf("%s",p); return 0; } 報錯: [email protecte

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

轉載自:http://www.linuxidc.com/Linux/2015-09/122966.htm 今天Linux下寫程式出現了“段錯誤(核心已轉儲)"的問題,查了一下資料,加上自己的實踐,總結了以下幾個方面的原因。 1.記憶體訪問出錯 這類問題的典型代表就是陣列越界。 2.非法記憶體訪問 出現這類問

ARM:Release版本和Debug版本執行不一致的可能原因以及解決方法

現象:Debug下執行正常,Release下執行不符合預期。 經過定位,確定是程式中對CPU片內Flash操作導致。 可能原因:可能是在Release下經過優化,對內部Flash操作的位置或許會變化,影響到程式的儲存資料段。 解決方法:改用外部Flash作為儲存資料後,問題

Laravel報class does not exist的可能原因及其解決辦法

Laravel 是一個強大 而優雅 php web 開發框架(至少官方宣傳時是這麼說的),對於各種型別、不同規模的專案它都能得心應手,這在很大程度上歸功於它強大的 IoC 容器和依賴包機制。 Laravel 中與 IoC 相關的關鍵部分就是 ServiceProvider,

ArcGIS 10.1 for Server 資料註冊失敗的可能原因解決辦法

ArcGIS 10.1 for Server是最新的GIS伺服器技術,相比10.0版本,10.1在服務正確性、可靠性、穩定性方面做出了很大改進,其中資料註冊就是確保服務正確可靠的一種有效方式。 所謂資料註冊,就是將服務所引用的資料路徑,註冊到ArcGISServer站點中,確保站點中所有的GIS伺服器均能正

錯誤核心)問題的分析方法(未成功)

是否產生core dump ulimit -c 0 #unlimited太大,沒有必要。 ulimit -c 10000 ulimit -c unlimited 用上面命令只會對當前的終端環境有效.如果想需要永久生效,修改檔案 /etc/security/limit

C語言 --錯誤核心

文章原地址:https://blog.csdn.net/qq_29350001/article/details/53780697 (侵刪欠)一、什麼是段錯誤?一旦一個程式發生了越界訪問,cpu 就會產生相應的保護,於是 segmentation fault 就出現了,通過上面

C語言再學習 -- 錯誤核心

一、什麼是段錯誤?一旦一個程式發生了越界訪問,cpu 就會產生相應的保護,於是 segmentation fault 就出現了,通過上面的解釋,段錯誤應該就是訪問了不可訪問的記憶體,這個記憶體區要麼是不存在的,要麼是受到系統保護的,還有可能是缺少檔案或者檔案損壞。二、段錯誤產

錯誤(sgementation fault)和核心(core dump)的除錯方法

本文主要介紹gdb+core的除錯方法,其他幾種方法的介紹參考:段錯誤產生原因及除錯方法彙總 一、printf方法除錯 二、gdb方法除錯 三、gdb+core檔案的方法除錯,步驟如下,具體參考:gd

錯誤核心)問題的分析方法

問題現象 今天在研究linux kernel中typedef的用法時,寫了一個程式test_typedef.c,內容如下: #include<stdio.h> typedef int size; typedef unsigned int wor

ubuntu安裝tensorflow-gpu:匯流排錯誤核心

我的環境是ubuntu16.04,cuda8.0,cudnn5.1,根據官方給的匹配說法是,tensorflow-gpu只能安裝1.2.0版本的,文章最後附了tensorflow與cuda以及cudnn的對應匹配版本圖,不誇張的說,1.2.0版本的tensorf

linux 使用雙目相機問題總結():放棄(核心

如果出現: *** Check failure stack trace: ***     @     0x7ff7320d9daa  (unknown)     @     0x7ff7320d9ce4  (unknown)     @     0x7ff7320d96e6

放棄(核心

如果出現: I1221 10:24:19.919129 12934 layer_factory.hpp:77] Creating layer mnist I1221 10:24:19.919893 12934 net.cpp:100] Creating Layer mni

ubuntu16.04 放棄 (核心)

2018-03-08 12:04:20.586667: F tensorflow/core/kernels/conv_ops.cc:672] Check failed: stream->parent()->GetConvolveAlgorithms(

Unity Android IL2CPP 編譯報錯的可能原因

Unity 版本 5.6.6f2 在使用 Android 的 IL2CPP 時,發生編譯報錯,報錯內容如下所示: stdout: IL2CPP error (no further information about what managed code was being co

torch.cuda.LongTensor but found type torch.cuda.FloatTensor for argument #2 'target'的可能原因

可能是在使用交叉熵損失函式的時候,target需要是整數,才能轉化成索引值,進而進行one-hot編碼。 輸出一下target的張量,可以看到每個值都後面有一個點.比如5.這樣,應該表示的就是浮點型別

nginx 下 thinkphp 502 bad Gateway + "LNMP鍵安裝包的Nginx 502 Bad Gateway錯誤可能原因解決方法"

參考: http://lnmp.org/faq/lnmp-Nginx-502-Bad-Gateway.html 如果是非上述原因: 請找到nginx.conf中 找到這一行 include enable-php.conf;  然後開啟 include enable-ph

Silverlight呼叫WebService出現CommunicationException The remote server returned an error: NotFound的可能原因

僅作為個人記錄: 今天研究了一下WCF Duplex雙工通道在SilverLight中進行通訊的問題,在網上找到了兩篇MSDN的關於用這兩者來實現一個線上聊天程式 (service: http://msdn.microsoft.com/zh-cn/library/cc645