获取字符串内存位置C ++ / CLI

时间:2014-05-06 09:51:09

标签: windows visual-studio c++-cli

我在Windows窗体应用程序中有一个方法,我从文本框中获取内容并以字符串形式存储。我想获取存储字符串的内存位置。在控制台应用程序中,这适用于&stringData。但在这种情况下,我无法获得内存位置。

这就是函数的样子:

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    String^ myString = textBox1->Text;
    // Get memory location of myString
}

1 个答案:

答案 0 :(得分:0)

字符串myString是一个托管对象。 You can tell because you declared it with the ^ operator。只需使用address-of运算符(&),就无法检索到托管对象的本机指针。

相反,您可以使用pin_ptr<>。只要pin_ptr<>在范围内,它就会固定对象,使其无法被垃圾收集器移动。

pin_ptr<System::String> pin = &myString;
void* ptr = pin;
// do whatever you want with ptr here...

但是假设问题中的代码没有为了示例而过度简化,我不知道你为什么要这样做。只需首先创建一个非托管对象,然后像通常使用&运算符一样检索其地址。