2017-11-01 5 views
1

申し訳ありません。私はGreenhill'sを初めて使いました。私はMULTI 6.1.6を使用しています。私の選択言語はC++です。グリーンヒルズのC++メモリ割り当て使用INTEGRITY

シミュレータを使用して、新しいものを使用して1Mより大きいクラスのオブジェクトを開始しようとすると、問題が発生します。 sizeof(Class_Bigが)> 1メガバイト、それは単にクラスのコンストラクタを呼び出すことはありません場合

Class_Big* big_obj; 
Class_Big = new Class_Big(); 
Class_Small* Small_obj; 
Small_obj = new Class_Small(); 

、NULLを返し、次の命令に進みます(Class_Small * Small_obj;)、正しく次のオブジェクトを作成します。 Class_Bigのいくつかの変数をスコープして、そのサイズを<にすると、コードはうまく動作し、オブジェクトが作成されます。

私は私のxmlファイルに

MemoryPoolSize="0x200000" 
HeapSize="0x200000" 

の両方を追加しました。私はLIBを使用した場合、私は建物の段階で取得

別のエラーは、大きなクラスを持っている:

intex: error: Not enough RAM for request. 
intex: fatal: Integrate failed. 
Error: build failed 

は、あなたはそれを助けることはできますか?問題の最初の部分については

おかげ

+0

_「問題があります」_問題の説明ではありません。何の問題?悪いことは何ですか?あなたの投稿で引用できるというエラーが出ますか? –

+0

まずはお返事ありがとうございます。実際、私は何の誤りもありません。クラスコンストラクタは呼び出されず、単にNULLを返して次のコマンドに進むだけです。 – user2320492

+0

あなたの投稿にその情報を含めるために投稿を編集してください。あなたの問題を完全に説明するのに役立つその他のもの –

答えて

1

ヒープとメモリプールのメモリサイズを指定するには、MULTI GUIで.intファイル(展開時に.gpjドロップダウンリストの下にあります)をダブルクリックして編集します。紫色のボックスの中を右クリックし、「編集」に移動します。 [属性]タブに移動し、メモリプールサイズとヒープサイズを大きく変更できます。

テキストエディタで.intファイルを編集することもできますが、guiを使用してこれらを設定する場合は、上記の手順に従います。 。彼らのマニュアルからも

:。

「使用中.bspファイルをチェック MinimumAddress/MaximumAddressキーワードで宣言されたメモリは、お使いのボードのメモリと一致している必要があり れていない場合は、これらのキーワードを変更するには.bspファイルに宣言されているメモリ がボードと一致する場合は、メモリを少なくするように アプリケーションを変更する必要があります。

さらに、default.ldをチェックし、そこでRAM制限の値を設定することができます。 __INTEGRITY_RamLimitとそれ以外の値を見てください。お役に立てれば!

+0

これは素晴らしかったし、私の問題を解決する。ありがとう! – user2320492

+0

問題はありません。うれしくて助かりました! – 9Breaker

0

は基本的に私は.ldコンポーネントファイルの「VirtualHeapSize」を変更している必要があります。

2番目の部分はまだそれを理解しようとします。

1

INTEGRITYを使用すると、各パーティションに使用されるメモリの量を完全に制御できます。これは静的な構成です。すべて、コードスタックヒープという名前が付いています。ですから、パーティション内にコード、オートマティックスなどがたくさんある場合は、あまりにも多くのことを求めると、メモリ割り当てが失敗することがあります。サイズを大きくしてみてください。