0

我正在尝试使以下人为的示例起作用。在下面的代码中,我声明了一个 const 全局变量,并尝试通过首先使用VirtualProtect使地址可写来修改它。

#include <cstdio>
#include "windows.h"

int const ConstantZero = 0;

int main() {
    DWORD OldProtect = NULL;
    VirtualProtect((void *)&ConstantZero, sizeof(int), PAGE_READWRITE, &OldProtect);
    const_cast<int&>(ConstantZero) = 1;
    printf("ConstantZero is %d\n", ConstantZero);
}

虽然这可行,但printf函数的参数作为立即值而不是变量传递。无论如何让编译器将参数作为变量传递?我正在为 x86 使用 MSVC 编译器版本 19.26.28806。

4

0 回答 0