2016-05-19 31 views
0

我想用MicroC OS-II建立一個新的嵌入式項目並使用C++。使用C++的MicroC OS-II

當我想使用new運算符創建一個類的實例時,我的處理器會運行一個異常,它似乎來自new運算符中發生故障的malloc調用。這是一個失敗的例子:

testC* test = new testC(); 

testC是一些具有整數成員變量的類。順便說一句,我使用的是Altera Nios 2.

經過一番研究,我得出結論認爲malloc與RTOS不兼容。 因此我的問題:是否可以在uC/OS-II中使用C++?或者有沒有辦法在新運營商中取代malloc呼叫?

到目前爲止,我找不到任何關於此的附加信息。

非常感謝您的幫助。 最佳, 羅馬

+0

出於好奇,爲什麼在嵌入式系統中使用'new'?大多數嵌入式系統內存有限,無垃圾收集。如果你打算使用'new',你必須解決碎片問題。 –

+0

嗯,我想用C++並製作一個OO系統。這就是爲什麼我需要新的運營商,不是嗎?我知道沒有gc,但這是一般的C++還是我錯了? – RMK

+0

以這種方式使用它有意義還是應該改變我的策略? – RMK

回答

0

我找到了一個解決方案,以避免新的運營商,同時仍保持多態性(這是使用new運營商的實際原因)。我在堆棧(或其他地方)創建一個對象,例如與

TestC test = TestC(); 

,並在實際的代碼中,我引用基類:

BaseC * base = &test; 

也許這可以幫助別人。 謝謝大家。

+0

如果你不需要該對象是可變的,它甚至更簡單:'BaseC const&base = TestC();'。 – bipll