C#, C♯, C#相談室 Part55
■ このスレッドは過去ログ倉庫に格納されています
0780デフォルトの名無しさん
2010/01/24(日) 17:57:25extern static void f(int n, ref double a);
static void Main(){
var a=new double[3]{1,2,3};
f(2, ref a[1]);
}
fはn個の要素を持つ配列を受け取る関数とします。
aの部分配列{2,3}をfに渡したいとして、
x86だと上記のようなやり方で一応正しく動作するのですが、
x64だとa[1]の内容が一時的に別のメモリにコピーされ、
fから戻ってきたときにそのメモリからa[1]にコピーされるので、
{2,3}を渡したことになりません。
質問したいのは、x64ではなぜこのような動作になっているのでしょうか。
普通にa全体を固定してa[1]のアドレスを渡してくれればいいのに、
と思うのですが。
■ このスレッドは過去ログ倉庫に格納されています