我有一種情況,我正在向命令緩衝區寫入命令。當執行命令緩衝區中的命令時,該命令將被處理並從UART發送到另一個子系統。處理該命令後,需要從UART發出的數據將存儲在隊列中並引發一個標誌。然後在我的主循環檢查後不久檢查標誌是否已經升高,如果是,則將數據從UART發送出去。但是,在處理命令和準備發送UART的時間之間,陣列被破壞。我知道這是因爲我正在使用在線調試器並設置斷點。世界正在發生什麼,我該如何解決這個問題?數組被刪除了
這是會發生什麼的一個示例:
右處理和在隊列存儲(a[]
是隊列)後:
a[0] = 0x3;
a[1] = 0x6;
a[2] = 0x9;
右之前它已準備好被髮送出去UART:
a[0] = 0x3;
a[1] = 0x6;
a[2] = 0x0;
,有時甚至,
a[0] = 0x3;
a[1] = 0x0;
a[2] = 0x0;
行爲是隨機的。有時候只有一個字節被破壞,其他時間是兩個字節。
編程語言?代碼示例?等 – 2010-08-23 15:59:06
沒有更多的信息,錯誤可能是字面上的任何東西。你確定'a'被安全地分配了嗎?你確定一切都安全嗎? (例如,你的所有其他指針值是否正確?)是否有任何奇怪的中斷正在跳入並破壞事件? – 2010-08-23 16:23:42
檢出valgrind - 它對於調試像這樣的內存錯誤非常有用。 – alternative 2010-08-23 17:17:15