我正在爲c編寫一個Atmel XMEGA微控制器的固件,我想我填充了4 KB的SRAM。據我所知,我只有靜態/全局數據和本地堆棧變量(我不在我的代碼中使用malloc)。我如何知道我的記憶是否已滿?
我使用本地變量緩衝一些像素數據。如果我將緩衝區增加到51字節,我的顯示器顯示出奇怪的結果 - 一個6字節的緩衝區運行良好。這就是爲什麼我認爲我的內存已滿並且堆棧覆蓋了某些內容。
創建更多的空閒內存是而不是我的問題,因爲我可以將一些靜態數據移動到閃存中,只在需要時才加載它。令我困擾的是,我從未發現記憶已滿。
當內存被填滿而不是讓它覆蓋其他數據時,是否有可能發現(例如,通過重置微控制器)?
據我所知,局部變量確實存在於堆棧中。但是堆棧的大小在編譯時還不知道,還是我錯了? – Martin 2010-11-10 09:41:52
@Martin:如果你不使用遞歸和變量大小的局部變量(字母只允許一些C編譯器),則可以在編譯時知道棧的大小。 – Curd 2010-11-10 09:56:23