1. ホーム
  2. C++

エラー: ローカル変数 'res' に関連付けられたスタックメモリのアドレスが返された

2022-02-11 05:25:16
<パス

今日、コードを書き出すときに、ある関数の中でローカル配列変数を定義して、戻り値でこのローカル配列変数のアドレスを返しました。

これはかなり愚かなミスです。ローカル変数のアドレスを返していますが、ローカル配列変数はスタック領域にあり、このアドレスのデータは関数が終了すると無意味になってしまいます。この場合どうするかですが、ローカル変数配列にstaticを追加すればいいのです。
よく関数内で変数を定義してこの変数を返すことがありますが、返されるのはこの変数の値であることに注意しましょう
では、この値はどこに格納されているのでしょうか?
C言語の仕組みは、returnの値をeaxレジスタに格納し、システムはeaxに格納された値を受け渡すというものです。