1

我需要将托管数组列表从 C# 代码传递到本机 C++ 代码。这是我正在使用的代码

for (int i = 0; i < Digits->Count; i++)
{
    pin_ptr<unsigned char> ptemp = &(Digits[i]->Digit[0]);
    nativeTemplates.digits.push_back(ptemp);
}

我看到传递给本机 c++ 的缓冲区是垃圾。这是因为当 pin_ptr 失去循环​​范围时,缓冲区不会被固定。使用以下代码一切都很好。

pin_ptr<unsigned char> ptemp = &(Digits[0]->Digit[0]);
nativeTemplates.digits.push_back(ptemp);

pin_ptr<unsigned char> ptemp1 = &(Digits[1]->Digit[0]);
nativeTemplates.digits.push_back(ptemp1);

pin_ptr<unsigned char> ptemp2 = &(Digits[2]->Digit[0]);
nativeTemplates.digits.push_back(ptemp2);

.
.
.

pin_ptr<unsigned char> ptempn = &(Digits[n]->Digit[0]);
nativeTemplates.digits.push_back(ptempn);

我的问题是如何在不明确编码列表中每个成员的固定的情况下执行我需要的操作。

4

0 回答 0