C/C++ および C# の関数からの戻り値の可用性の概念について疑問があります。関数内で作成された変数(ローカル変数)へのポインタを返すのは正しくないことはわかっています。この場合、値の配列 (int など) を作成し、関数からこの配列を返したい場合、どうすればよいでしょうか? また、ローカル変数を直接 (ポインターを介してではなく) 返す場合、この変数に割り当てられたメモリがランタイムによって再利用されるのはいつですか? 返された値がこの値の受信者に割り当てられた後ですか?
関連するもう 1 つの質問は C# にあります。C# で「new」演算子を使用して関数で作成された変数は、ヒープ上に作成されます。関数で作成されたローカル変数の場合は本当ですか? 返される値が参照/アドレスによるものである場合、上記のルール(C++)に違反していませんか? これを C# で実現する方法は何ですか?
私の質問は素朴に思えるかもしれませんが、コンパイラとランタイムの動作をよりよく理解しようとしています。これらの質問に対する答えを教えていただければ大変助かります。
ありがとう、ラケシュ。