2016-05-19 11 views
0

MicroC OS-IIを使用して新しい組み込みプロジェクトをセットアップし、C++を使用したいと考えました。C++を使用したMicroC OS-II

new演算子を使用してクラスのインスタンスを作成したいときは、新しい演算子のmalloc呼び出しに失敗したように見える例外が発生します。 TESTC整数メンバ変数を持ついくつかのクラスであると

testC* test = new testC(); 

:これは失敗例です。ところで、私はアルテラの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

関連する問題