如何解决在C#中将string []转换为双指针
我正在尝试将string[]
作为byte**
从C#传递到C ++。作为免责声明,我不得不说,我以前从未真正使用过C ++或指针。所以我可能会出错。我使用以下代码对每个string
进行编码和固定:
var strings = new string[] { "Some string","Another string" };
var handles = new GCHandle[string.Length];
var pointers = new byte*[string.Length];
for (int index = 0; index < strings.Length; index++)
{
var bytes = Encoding.UTF8.GetBytes(strings[index]);
var handle = GCHandle.Alloc(bytes,GCHandleType.Pinned);
handles[index] = handle;
pointers[index] = (byte*)handle.AddrOfPinnedObject().ToPointer();
}
//Release the handles later...
我当前遇到的问题是,我无法固定包含所有指针的数组。我尝试使用
GCHandle.Alloc(pointers,GCHandleType.Pinned);
会引发异常,并且
fixed (byte** pointer = &pointers[0])
不起作用,因为该数组在fixed
块外未固定。所以我想我也许可以做这样的事情
byte** pointer = (byte**)this.pointers[0]
获得一个指针,这会导致异常,因为我正在尝试读/写受保护的内存。
我目前不确定是否有可能实现目标,或者我的方法是否错误。是否有人有想法或处于类似情况?
感谢您的帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。