从String ^转换为String *

时间:2012-07-09 16:59:21

标签: pointers c++-cli

我目前有一个小问题,我认为这很容易,但不是,所以,(也许这很容易,但我不知道)我需要将一个String ^转换成一个String ^ *所以基本上一个字符串指针,一小段代码:

ARPLC_command_byuser = textBox1->Text;

我已经尝试了各种各样的方法,但似乎都失败了(好吧,他们没有,我这样做)。

如果您有任何想法,请告诉我该怎么做。

1 个答案:

答案 0 :(得分:3)

那是不可能的。当垃圾收集器压缩堆时,托管对象在内存中移动。这将使任何指针无效。这是C ++ / CLI使用^ hat来指示对象引用的主要原因,它们是垃圾收集器在移动对象时可以识别和更新的指针。

从技术上讲,可以固定托管对象,以确保它不会被移动。你可以用pin_ptr<>做些什么或者GCHandle :: Alloc()。这应该避免。通过使用Marshal类将托管字符串复制到非托管内存中,将托管字符串转换为本机指针。