昨天在寫**的時候,碰到了編譯成功,但是執行時顯示段錯誤的問題。
新增列印定位到了1006行:
pstpdu_initialuemessage->protocolies->next->next->value.value.decoded.pdu_userlocationinformation->choice = 2;
發現此處的pdu_userlocationinformation是指標,而我沒有給它申請記憶體就直接指向了choice,故發生了段錯誤,更改如下:
pstpdu_initialuemessage->protocolies->next->next->value.value.decoded.pdu_userlocationinformation = ossgetinitializedmemory(pst0ss_world,sizeof(struct oss_ngap_userlocationinformation));
psttempieuserlocationinformation = pstpdu_initialuemessage->protocolies->next->next->value.value.decoded.pdu_userlocationinformation;
if ( clfw_null == psttempieuserlocationinformation )
psttempieuserlocationinformation->choice = oss_ngap_userlocationinformationnr_chosen;
更改後沒有報錯,以後碰到結構體中有指標型別的成員,需要給他申請記憶體後方可使用。 匯流排錯誤和段錯誤問題的定位
對現在的很多初級的程式原來說如果遇到 匯流排錯誤 bus error 或者段錯誤 segementation fault core dump 是一件非常折磨人的事,讓人一時間找不到什麼好的方法也不知從何處下手去解決這個問題 和許多人一樣,我很快也遇到了這樣的問題 出現這個錯誤時,錯誤資訊對引起這種事...
段錯誤?打的就是段錯誤!!
呵,段錯誤?自從我看了這篇文章,我還會怕你個小小段錯誤?請開啟你的linux終端,跟緊咯,準備發車!嘟嘟嘟噠 include void errfunc intmain 這段 拿去執行,肯定段錯誤。系統會在程式崩潰的那一剎那將整個核心的資訊記錄在乙個檔案裡邊。如果你是第一次,那麼ls是查不到的。這樣 ...
段錯誤(Segment Fault )莫名的問題
段錯誤或段違規 segmentation violation 應該已經很清楚,之前有過一篇文章介紹過 段模型 在一般硬體中,段錯誤是由於 記憶體管理單元 負責支援虛擬記憶體的硬體 的異常所致,而該異常則通常是由於解除引用乙個未初始化或非法值的指標引起的。如果指標引用乙個並不位於你的位址空間中的位址,...