c++ - 写入指定内存位置

标签 c++ memory pointers

我刚刚开始学习 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/

相关文章:

c - 二进制搜索树 malloc 没有为后续节点提供足够的内存

python - 如何通过ID访问变量?

c - 如何使用指针将输入函数中的2个int,1个float变量输入传递给主函数?

c - 将返回值分配给 int 数组

memory - 有理数向量的位编码

c++ - 这个双向链表代码怎么解释呢?

c++ - C++ 中的 FreeRTOS 更改任务内存?

c++ - 合并排序不能完全工作

C++:销毁自己内部的lambda

c++ - 我可以在 C++ 中调用另一个重载的构造函数吗?