2017-04-20 11 views
1

私はメモリ内の特定の場所にオブジェクトを作成したいと思います。私の場合、アドレスは0x64000000です。これは外部のRAMです。このメモリは空です(つまり、このメモリから書き込み、読み取り、または実行するものはありません)。 これまでのところ、安定しているようです。メモリを割り当てずに新しい配置を使用しても安全ですか?

私はstm32f4でこれを実行しています。

このように新しい配置を使用することに関する危険性はありますか?その場合は、特定のメモリアドレスにオブジェクトを作成する方法はありますか?

+1

あなたの場合アプリケーションがそのメモリを使用する唯一のものであれば、その中にオブジェクトを作成するために新しい配置を使用することは安全でなければなりません。そのメモリは自動的に特別なRAMに配置されません。たとえば、 'std :: string'オブジェクトは実際の文字列データを自動的にRAMではなくヒープに配置します。 –

+2

**は安全でなければなりません、新しい配置は[組み込みプログラミング](http://stackoverflow.com/a/25718430/1938163)でその用途のいくつかを持っています。もちろん、あなたが目標としているアーキテクチャーであなたのコードを実際に見ていなくても、単に状態を立てることは不可能です。 –

答えて

4

メモリが空であることを実際に知っている場合(スタックやダイナミックストレージで使用されていない場合でも使用できれば安全です)、C++標準ではこのようなことは保証されていません。あなたは、ハードウェア/ランタイム実装のドキュメントに頼るために残されています。

、それは他のハードウェアに移植する必要がある場合、プログラムは変更が必要な場合があります。それは、仮想メモリを使用するすべてのシステム上では動作しません。

関連する問題