将字符串写入指针 C++

write string to pointer C++

我有一个 Dll,我将其注入到我的目标进程中。 此 Dll 会更改给定内存地址处的一些变量。 通常我会这样做:

  int* variable = (int*)0x????????;
  *variable = 1;

现在我想用字符串做同样的事情。 读取字符串有效。

string* variable = (string*) 0x????????;

但是更改字符串会使进程崩溃。

*variable = "hello world"; //crash

我该如何解决这个问题?

您没有说明如何保证地址 0x???????? 处的内存被正确分配或字符串对象被初始化。

如果指针不指向已分配的内存,或者如果在 copy-assign 时字符串未初始化,则会出现未定义的行为。可能的未定义行为包括:

But changing the string crashes the process.

要修复它,请分配并初始化一个字符串对象并使用该字符串的地址。

您不能以这种方式使用 std::string 或任何其他非 POD 数据类型。您需要做的是:

 char* variable = (char*) 0x????????;
 strcpy( variable, "hello world" );

或其他,可能是 MS 特定函数来操作 C 字符串。