1. 程式人生 > >MFC 檔名、目錄名或卷標語法不正確(錯誤碼123)

MFC 檔名、目錄名或卷標語法不正確(錯誤碼123)

吃下老本

Ma_Hong_Kai

結果是,一般沒問題有問題很扯。

 

輕則亂碼,導致可以找到報錯的地方;重則,程式崩潰。如果沒有丟擲異常可能很難找。

 

問題現象:

錯誤碼123

 

自己查詢的資料:

錯誤123:檔名、目錄或卷標語法錯誤怎麼解決

檔名、目錄名或卷標語法不正確原因(百度經驗)

 

打完日誌程式碼中的

設定路徑

C:\User\Username\Application Data\gg\x.dat

實際路徑

C:\Users\Username\AppData\Roaming\gg\x.datgg(亂碼顯示不出來當時沒截圖)

可以看到有亂碼

 

部分程式碼:

…………

size_t policyFileSize = PolicyFile.length();

wchar_t *pPolicyFileBuffer = new wchar_t[policyFileSize+1];

wmemset(pPolicyFileBuffer,'\0',policyFileSize+1);  // 新增此程式碼

………………

 

出現亂碼的原因一般是兩個一個是,轉碼,還有一個是讀取不應該讀取的“空間”,即是記憶體;由於該記憶體寫有內容,因此在堆中申請的空間沒初始化,但是尚未使用,有內容存在,在再次覆蓋的時候就會出現後面的內容沒有覆蓋會出現亂碼;

還有一個崩潰,是由於操作未申請空間,假設policyFileSize 為20.你初始化的空間為40,恰好最後面的10被使用,就可能出現崩潰。

 

除此之外,微軟的磁碟碎片整理,還有一些磁軌劃分就是因為在分割槽使用的時候出現的一些零碎的空間進行規劃,在“空間”的使用,本質上是重寫,類似於原始的磁頭再次刻畫一樣。因此多次刻畫可能導致一些分割槽(應該說是扇區損壞),此時需要使用一些工具,分出這些壞的扇區,在下次使用的時候跳過。

 

Ma_Hong_Kai 學習筆記,如有錯誤之處,歡迎指正