我刚刚开始学习 C++,所以我可能在这门课上离题很远,但不要着急。
我想做的是写入我指定的内存地址 - 如果可能的话?
我使用的代码是:
#include <iostream>
int main()
{
using namespace std;
int i = 100;
int* p = &i;
cout << p << "\n";
cout << "Writing" << "\n";
int* w = (int*)0x28ff18;
*w = 101;
cout << *p << "\n" << "Done";
return 0;
}
我为 i
获得的地址是 0x28ff18
,那么是否可以通过指定此地址来写入该位置?而不是使用 *p = 101
。显然我正在使用的东西不会改变它,我不知道它在哪里或者是否在写 101
。
非常感谢任何简单的解释或帮助。
最佳答案
在大多数计算机和大多数编译器上,这样的事情可能会起作用。但 C++ 标准对此不作任何保证。
例如,当我在 Windows 机器上使用 MSVC++ 编译和运行您的代码时,每次地址都不同。您不能期望同一程序的不同运行之间它是相同的。
另请注意,您存储指针值的整数应该足够大(例如,如果您有 64 位指针,则为 64 位整数)。如果您想这样做,请使用 uintptr_t(感谢 larsmans 指出这一点)。
关于c++ - 写入指定内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10819507/