【发布时间】:2011-10-26 18:53:40
【问题描述】:
我目前正在编写一些使用调用的 C#/C++ 代码。在 C++ 方面,有一个 std::vector 充满了指针,每个指针都由 C# 代码中的索引标识,例如,函数声明如下所示:
void SetName(char* name, int idx)
但现在我在想,既然我正在使用指针,我不能将指针地址本身发送到 C#,然后在代码中我可以做这样的事情:
void SetName(char*name, int ptr)
{
((TypeName*)ptr)->name = name;
}
显然这是我所了解的快速版本(并且可能无法编译)。
是否可以保证指针地址在 C++ 中保持不变,以便我可以安全地将其地址存储在 C# 中,还是由于某种原因这会太不稳定或太危险?
【问题讨论】:
-
澄清一下:你知道上面的代码只有在
unsafe块内时才能在 C# 中编译?