- PR -

C# ポインタを格納する配列の操作方法

1
投稿者投稿内容
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2004-10-22 11:04
(byte *)型の値(アドレス)を配列で管理したいのですが、
どこに誤りがあるか分かりません。
下記のようなサンプルですとtempには確かにアドレスが格納されていますが、
buff[0]、buff[1]、buff[2] … には0(ゼロ)が代入されてしまいます。
どこを修正すれば各配列要素にアドレスを格納できるのでしょうか?
C++の開発経験が無いのでポインタを格納する配列の宣言
および操作方法に自信がありません。
よろしくお願いします。

// サンプル
//
// *** 宣言部分の記述 ***
int SIZE;
unsafe public byte*[] buff;
unsafe private byte* temp;
// メモリ中の固定連続領域を確保することで機能する関数(DLL)
[DllImport("test.dll")] public static extern byte *GetNewBuffer();


// *** 実行部分の記述 ***


SIZE = 1000;
unsafe
{
buff = new byte*[SIZE];
for(int i = 0;i < SIZE;i++)
{
// ウオッチウインドウでモニターすると
// tempにはねらい通りアドレスが格納されているのが確認される
byte* temp = GetNewBuffer();
// ところがbuff[]にはアドレスではなく0が格納されているように見える
buff[i] = temp;
}
}

// 後でbuffからアドレスを取り出して使う

unsafe
{
byte *temp2;
temp2 = buff[123];


}
1

スキルアップ/キャリアアップ(JOB@IT)