亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 9670 | 回復(fù): 4
打印 上一主題 下一主題

用fclose關(guān)閉文件碰到的問題 [復(fù)制鏈接]

論壇徽章:
29
戌狗
日期:2013-11-14 09:53:052016科比退役紀念章
日期:2016-07-12 18:29:4415-16賽季CBA聯(lián)賽之新疆
日期:2016-11-07 13:15:0015-16賽季CBA聯(lián)賽之遼寧
日期:2017-01-18 10:23:5115-16賽季CBA聯(lián)賽之吉林
日期:2017-05-02 14:02:2319周年集字徽章-年
日期:2020-01-15 13:50:582016科比退役紀念章
日期:2021-06-03 14:15:3115-16賽季CBA聯(lián)賽之山東
日期:2021-06-21 17:30:5615-16賽季CBA聯(lián)賽之江蘇
日期:2021-06-22 16:42:2015-16賽季CBA聯(lián)賽之深圳
日期:2021-12-21 15:54:0215-16賽季CBA聯(lián)賽之佛山
日期:2022-04-08 09:43:5715-16賽季CBA聯(lián)賽之廣東
日期:2022-06-29 19:59:19
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-07-24 10:11 |只看該作者 |倒序瀏覽
先說一下基本的環(huán)境
用wmware6.0 在windowXP的機器上建了一個red hat enterprise linux 4的虛擬機。然后通過ssh secure shell client客戶端連到虛擬機上寫程序,用的 g++ 編譯源代碼。
我用fopen 打開一個文件獲得文件指針fp,然后進行讀操作,在退出程序前用fclose關(guān)閉fp。這是程序報錯
SIGSEGV, Segmentation fault. 我用gdb調(diào)試發(fā)現(xiàn)程序死在 fclose函數(shù)中的free操作上。在調(diào)用fclose前檢查fp的值,發(fā)現(xiàn)值沒有變化。用 "p *fp"檢查 *fp 結(jié)構(gòu)的內(nèi)容。close就是執(zhí)行不了。

我又在調(diào)用fclose之前用ferror測試fp,返回值為0;用fread取文件內(nèi)容,也沒有報錯,能讀出數(shù)據(jù)。
但在fread成功后,馬上調(diào)用fclose還是出錯。

這是我的測試語句:

int ret = 0;
char buffer[1024];

printf("file error = %d\n",ferror(pFile->pFile));

ret = ftell(pFile->pFile);
printf("file pos = %d\n",ret);

fseek(pFile->pFile,0,SEEK_SET);

memset(buffer,0,1024);
ret = fread(buffer, 1, 10, pFile->pFile);
buffer[ret] = 0;
printf("buffer = %s:length = %d\n",buffer, ret);

fclose(pFile->pFile);

這是測試語句對應(yīng)的輸出:

file error = 0
file pos = 20
buffer = <a>
        <b>1<:length = 10



這是用gdb調(diào)試報的錯誤信息。

Program received signal SIGSEGV, Segmentation fault.
0x004dcb12 in _int_free () from /lib/tls/libc.so.6
(gdb) up
#1  0x004dd33a in free () from /lib/tls/libc.so.6
(gdb) up
#2  0x004cd746 in fclose@@GLIBC_2.1 () from /lib/tls/libc.so.6
(gdb) up
#3  0x08048ddf in FILE_close (pFile=0x804ba20) at ldr_file.c:95
95              fclose(pFile->pFile);
Current language:  auto; currently c++


請問一下有誰碰到過這種情況?是什么原因造成的?

[ 本帖最后由 wxycyel 于 2008-7-24 10:16 編輯 ]

論壇徽章:
0
2 [報告]
發(fā)表于 2008-07-24 10:13 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
29
戌狗
日期:2013-11-14 09:53:052016科比退役紀念章
日期:2016-07-12 18:29:4415-16賽季CBA聯(lián)賽之新疆
日期:2016-11-07 13:15:0015-16賽季CBA聯(lián)賽之遼寧
日期:2017-01-18 10:23:5115-16賽季CBA聯(lián)賽之吉林
日期:2017-05-02 14:02:2319周年集字徽章-年
日期:2020-01-15 13:50:582016科比退役紀念章
日期:2021-06-03 14:15:3115-16賽季CBA聯(lián)賽之山東
日期:2021-06-21 17:30:5615-16賽季CBA聯(lián)賽之江蘇
日期:2021-06-22 16:42:2015-16賽季CBA聯(lián)賽之深圳
日期:2021-12-21 15:54:0215-16賽季CBA聯(lián)賽之佛山
日期:2022-04-08 09:43:5715-16賽季CBA聯(lián)賽之廣東
日期:2022-06-29 19:59:19
3 [報告]
發(fā)表于 2008-07-24 10:17 |只看該作者

回復(fù) #2 aple_smx 的帖子

這些代碼很簡單的,沒有花括號和縮進,不用對齊。

論壇徽章:
4
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT運維版塊每日發(fā)帖之星
日期:2016-08-11 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-08-15 06:20:00
4 [報告]
發(fā)表于 2008-07-24 11:20 |只看該作者
是不是文件fclose了2次以上?
pFile是個對象吧,檢查pFile對應(yīng)的類,是不是析構(gòu)函數(shù)中做fclose了?

論壇徽章:
29
戌狗
日期:2013-11-14 09:53:052016科比退役紀念章
日期:2016-07-12 18:29:4415-16賽季CBA聯(lián)賽之新疆
日期:2016-11-07 13:15:0015-16賽季CBA聯(lián)賽之遼寧
日期:2017-01-18 10:23:5115-16賽季CBA聯(lián)賽之吉林
日期:2017-05-02 14:02:2319周年集字徽章-年
日期:2020-01-15 13:50:582016科比退役紀念章
日期:2021-06-03 14:15:3115-16賽季CBA聯(lián)賽之山東
日期:2021-06-21 17:30:5615-16賽季CBA聯(lián)賽之江蘇
日期:2021-06-22 16:42:2015-16賽季CBA聯(lián)賽之深圳
日期:2021-12-21 15:54:0215-16賽季CBA聯(lián)賽之佛山
日期:2022-04-08 09:43:5715-16賽季CBA聯(lián)賽之廣東
日期:2022-06-29 19:59:19
5 [報告]
發(fā)表于 2008-07-24 12:45 |只看該作者
找到原因了,是內(nèi)存越界的問題,分配內(nèi)存時考慮不周,少了一個字節(jié)。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP