我正在開發一個多線程程序。它能夠正確地關閉所有線程,但是,它最後會發生段錯誤。通過註釋掉我的代碼的某些部分,我發現它是這個領域與開放交易的代碼內/關閉文件:打開/關閉文件時發生分割錯誤?
char *pid_fname;
FILE *file;
sprintf(pid_fname, "%s%d%s", "/proc/", pid, "/stat");
file = fopen(pid_fname, "r");
/* code */
fclose(file);
我試着在gdb調試,但是我只有打印出來後,得到這個'where'後段錯誤:
#0 0x2f312f63 in ??()
#1 0x74617473 in ??()
#2 0xbfaee700 in ??()
#3 0xbfaee77c in ??()
#4 0x006a7810 in ??()
#5 0x00000000 in ??()
任何人都可以給我一些關於從哪裏去的指針嗎?
這是很可能你會得到像'警告的警告:「pid_fname」在此被用來初始化function'。你應該多注意警告多少次,它可以幫助你防止像這樣的運行時崩潰。此外,要獲取調試符號,您需要使用[調試選項](http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options)(假設您使用的是gcc) – 2012-02-20 05:44:30