• ベストアンサー

関数内でconst修飾子を使用した場合の配置

お世話になります 関数内でconst修飾子を付加した領域を宣言します。 その領域は何処に取られるのでしょうか? RAM?ROM?スタック? コンパイル環境により異なるのでしょうか? void Test(void) { const int i_dat = 0;   ・・・・・・ } よろしくおねがいいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

念のため... C++ではconst修飾されたオブジェクトは、実行時に実体が生成されないことが多々あります。関数の中で定義されても、外で定義されてもです。Cでも、最適化しだいではありえます。 この場合、どこにも領域が取られません。

その他の回答 (2)

  • TT414
  • ベストアンサー率18% (72/384)
回答No.2

>コンパイル環境により異なるのでしょうか? どころか、コンパイル時の最適化オプションの指定、関数の複雑さの程度により、RAM、ROM、register、又はプログラムコードなどのどれかになります。 register、又はプログラムコードはi_datのアドレスを使用していないときに最近のコンパイラでは、なるはずです。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

> コンパイル環境により異なるのでしょうか? はい。 CとC++でも事情が異なります。また、型によっても事情が異なります。

関連するQ&A