• <span id="urubq"><output id="urubq"></output></span>
      <span id="urubq"><video id="urubq"><b id="urubq"></b></video></span>

        
        
      1. 首頁 > 新聞動態 >  

        新聞動態
        NEWS

        兩次fopen不合的文件返回雷同的FILE* 地址

        添加時間:2013-7-14 點擊量:

          比來接觸一個垃圾法度,呈現一個新鮮的bug,現象是兩次fopen不合的文件返回雷同的FILE地址,第二次返回的FILE有時辰無故端的就被封閉了。以下代碼是對這個bug的概括:

          autofp1=fopen(c:/1.txt,rb);

          charbuff[10];

          assert(fread(buff,1,10,fp1)==10);

          //垃圾法度封閉fp1時沒有至fp1=nullptr

          fclose(fp1);

          //微軟的crt對FILE應用緩存機制,所以這里返回的fp2==fp1,可參考stream.c里的_getstream函數

          autofp2=fopen(c:/1.txt,rb);

          //垃圾法度的垃圾布局引起第二次封閉fp1,事實上,這里將引起fp2的封閉

          fclose(fp1);

          //于是垃圾法度讀fp2失敗

          assert(fread(buff,1,10,fp2)==10);

          最后,都用C++喇,誰tmd還用fopen這么古老的api,次凹!!!!

          容易發怒的意思就是:別人做了蠢事,然后我們代替他們,表現出笨蛋的樣子。——蔡康永

        亚洲伦理av