我有一個很奇怪的問題。我一直使用ReadFile()從通過USB連接到PC的設備讀取數據。由於要讀取的數據是以64字節爲單位接收的,因此總是以64字節讀取ReadFile()。但是,當我必須讀取小於64字節的幀時,偶爾會發生崩潰。C++中的ReadFile崩潰
我給寫的代碼的一個例子:
//Memory allocation done to read 100 bytes from device - This value is known in prior and hence memory is allocated exactly
new(100bytes);
// First read of 64 bytes
ReadFile(64)
// Second read of 64 bytes
ReadFile(64)
- 這將從所述設備發送>這裏數據僅僅是100-64 = 36。因此,即使我說爲64的讀字節,那麼數據大於36bytes就不會出現這種情況。因此,此代碼應該工作(雖然我知道分配較少的內存並調用ReadFile的大小超過內存分配是不正確的)。
問:莫非ReadFile的()崩潰,如果數據讀取超過內存分配更多的字節是木已成舟(雖然我們知道什麼是我需要讀取數據的確切大小)
PS:之所以會出現這樣一種的一個實現是在開發的代碼設計中的一個小缺陷。
您是否以異步模式打開它? ReadFile主要用於從文件(或設備)同步讀取數據(它也支持異步模式)。如果你在異步模式下工作,我建議你使用ReadFilEx – sarat