1

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

ARPLC_command_byuser = textBox1->Text;

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

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

4

1 回答 1

3

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

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

于 2012-07-09T17:15:12.260 回答