我在Windows窗体应用程序中有一个方法,我从文本框中获取内容并以字符串形式存储。我想获取存储字符串的内存位置。在控制台应用程序中,这适用于&stringData
。但在这种情况下,我无法获得内存位置。
这就是函数的样子:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
String^ myString = textBox1->Text;
// Get memory location of myString
}
答案 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...
但是假设问题中的代码没有为了示例而过度简化,我不知道你为什么要这样做。只需首先创建一个非托管对象,然后像通常使用&
运算符一样检索其地址。