C 函式呼叫 段錯誤

2021-08-17 01:22:16 字數 485 閱讀 6339

呼叫乙個函式時發生段錯誤:segmentation fault

加入列印日誌之後,發現執行時根本沒有進入該函式就已經crash,

將該函式全部注釋掉在執行時又一切正常。

經過除錯發現原因:該函式中存在乙個大陣列

#define buffer_size (1024 * 1024)

char buffer[buffer_size];

將buffer_size改為(4 * 1024)之後程式執行正常。

分析結果:

函式內的區域性變數在棧記憶體中分配,而棧的大小有限制,使用的棧記憶體過大可能導致棧記憶體溢位,在實際執行時找不到函式入口。

如果一定要使用大塊的記憶體可以使用全域性變數(資料段)、靜態變數(static,資料段)、動態分配記憶體(堆)。

使用ulimit -a檢視棧記憶體大小

libvlc new 呼叫產生段錯誤

在除錯程式的時候,碰到乙個奇怪的段錯誤問題。只要鏈結的時候使用 wl,rpath vlc lib就會產生段錯誤,如果鏈結的時候使用的是 wl,rpath tool vlc lib則不會出現。機器是老舊的neokylin 4.0版本,沒有安裝gdb 實際上也不可能去安裝 無法除錯,所以在程式裡多新增了...

C語言段錯誤

當我在linux下寫c語言的時候經常會遇到段錯誤.所以就來細究一下.段錯誤或段違規 segmentation violation 檢視expert c programming peter van der linden pg.156 解釋到段錯誤是由於記憶體管理單元 mmu 的異常所致,而該異常則通常...

c 語言段錯誤

乙個問了我乙個問題,乙個c程式執行出現了段錯誤,這個問題非常好,很多初學者都容易犯這個錯誤,具體 如下 這個編譯沒有問題,但是執行是段錯誤 segmentation fault 因為你定義了乙個結構體指標p,用來指向此類結構體,但是你卻沒有給他賦值,此時p的值為null,你並沒有在記憶體中為p分配任...