最近編程過程中遇到的一個BUG.
首先我來描述一下,這個BUG是CString類的使用引起的,在編程過程中有個默認的規則,就是CStirng, std::string這種變長的數據類型是不可以做為模塊參數進行傳遞和調用, 因為會引起崩潰, 這種情況我
也遇到過,但是這個錯誤并不是因為做為模塊參數而引起的,而是因為包含Cstring 的結構體,在類定義時,
成員變量的順序引起的,也就說將包含CSting類的結構體放在某個變量(這個變量是一個指針連表)前時,會出錯,而放變量的后面就不出錯,原因是因為包含CString類的結構體在一個線程中進行了修改,因為CString類是變長的,所以寫入了大量的數據。使得CString類的地址覆蓋了,它前面變量的地址,所以在程序退出時,刪除錯誤的指針地址,造成崩潰。
首先我來描述一下,這個BUG是CString類的使用引起的,在編程過程中有個默認的規則,就是CStirng, std::string這種變長的數據類型是不可以做為模塊參數進行傳遞和調用, 因為會引起崩潰, 這種情況我
也遇到過,但是這個錯誤并不是因為做為模塊參數而引起的,而是因為包含Cstring 的結構體,在類定義時,
成員變量的順序引起的,也就說將包含CSting類的結構體放在某個變量(這個變量是一個指針連表)前時,會出錯,而放變量的后面就不出錯,原因是因為包含CString類的結構體在一個線程中進行了修改,因為CString類是變長的,所以寫入了大量的數據。使得CString類的地址覆蓋了,它前面變量的地址,所以在程序退出時,刪除錯誤的指針地址,造成崩潰。