DLL側で確保したメモリをC#側で使いたい
- 題名: DLL側で確保したメモリをC#側で使いたい
- 著者: ぴよ
- 日時: 2010/08/03 20:54:55
- ID: 27152
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: DLL側で確保したメモリをC#側で使いたい
- 著者: 魔界の仮面弁士
- 日時: 2010/08/03 21:32:21
- ID: 27153
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: DLL側で確保したメモリをC#側で使いたい
- 著者: ぴよ
- 日時: 2010/08/03 23:47:46
- ID: 27154
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: DLL側で確保したメモリをC#側で使いたい
- 著者: Hongliang
- 日時: 2010/08/04 2:59:23
- ID: 27155
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: DLL側で確保したメモリをC#側で使いたい
- 著者: shu
- 日時: 2010/08/04 21:33:25
- ID: 27156
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: DLL側で確保したメモリをC#側で使いたい
- 著者: ぴよ
- 日時: 2010/08/04 21:36:05
- ID: 27157
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: DLL側で確保したメモリをC#側で使いたい
- 著者: ぴよ
- 日時: 2010/08/04 21:50:14
- ID: 27158
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[6]: DLL側で確保したメモリをC#側で使いたい
- 著者: shu
- 日時: 2010/08/05 7:51:36
- ID: 27159
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
こんにちは。初めて投稿させていただきます。
業務で使用するためC#を勉強しています。
C#歴は1ヶ月です。
やりたいこと
・DLL側で配列用のメモリを確保し、C#側で使用したい。
下のようなコードを書いてみたのですが、上手くいきません。
DLL側のfor文の中で落ちてしまいます。
状況は
・コンパイルは通る。
・デバッガで追った時に配列の先頭アドレスはnullで渡されており、
newで確保したときに、アドレスが割り当てられている。
・for文でi = 2となったときに
「'System.StackOverflowException' のハンドルされていない例外が mscorlib.dll で発生しました。」
というエラー表示がでる。
ネットなどでいろいろ調べてみたのですが、原因がよくわかりません。
どこか勘違いしているのだと思うのですが。
わかる方教えていただけないでしょうか。
よろしくお願いします。
■DLL側
int TestAlloc_UnChar(
unsigned char** data,
int allocNum
)
{
if(*data != NULL)
{
*data = NULL;
}
if(*data == NULL)
{
*data = new unsigned char [allocNum];
}
for(int i = 0; i < allocNum; i++)
{
*data[i] = i;
}
return 0;
}
■C#側
namespace MSUI
{
public partial class Form1 : Form
{
[DllImport("C:test_function.dll")]
extern static unsafe int TestAlloc_UnChar(
out byte[] data,
int allocNum
);
byte[] testData0 = null;
int testAllocNum = 512 * 512;
private void Button1_Click(object sender, EventArgs e)
{
TestAlloc_UnChar(
out testData0,
testAllocNum,
);
}
}
}