Re: [問題]請問在FreeBSD底下設計程式

看板FreeBSD作者時間21年前 (2005/03/08 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/6 (看更多)
哈哈 修改部分程式碼讓它可以通過-Wall之後 就正常了 或許是那些亂七八糟的東西干擾了程式的運行吧.. 修改的部份包括一些之前測試沒清乾淨的unused variable 還有main()要return int 還有printf("%d")改成printf("%lld") 我用的資料型態是uint64_t 大概就這些了 謝謝謝謝謝 感激不盡 ※ 引述《gmobug (低等動物)》之銘言: > 恩.. > 我確實是有些工作沒做好 > 不過我那個*res的位置是malloc出來的所以應該不會有問題 > ※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言: > > 1. 請勿撰寫類似以下的程式碼 > > char *foo() > > { > > char str[] = "12345"; > > return str; > > } > > 2. 用 gcc 編譯的話請開 -Wall 選項,並把所有 warning 正確的解決... > > 譬如說以上程式碼會造成 warning: function returns address of local variable > > 相關知識請參考 C 語言基礎書籍,講 scope 和 lifetime 那章... > > 有關 segmentation fault 的資訊, > > 可以參考任何 Unix 或 Linux Programming 書籍, > > 在 signal 那章... > > 另外請參照這類書籍說明 gdb 的部分, > > 以協助您利用 dump 出來的 core 檔搭配執行檔進行除錯, > > 要做這個動作麻煩您在編譯時加個 -g 或 -ggdb 的參數, > > 這樣通常就能精確抓到問題所在... > > 至於 process 會收到這個 signal 的原因, > > 主要是 pointer 指到 process 被 OS 授權存取的記憶體以外的區間, > > 然後又對該 pointer 進行存取而造成的, > > OS 會攔截這個的原因是基於安全和穩定性的考量... > > 簡單說就是程式寫錯, > > pointer 沒初始化就拿來用, > > 或是根本不檢查 library function 傳回的是不是 NULL 等等的可能性都有.. -- <師大附中 BBS 站> bbs.hs.ntnu.edu.tw ★ From: sw169-71-109.adsl.seed.net.tw
文章代碼(AID): #12B9S400 (FreeBSD)
文章代碼(AID): #12B9S400 (FreeBSD)