如何在file2.cpp中访问指定内存地址0x0364DF00的内容?
解决跨文件访问指定内存地址内容的问题
你的代码问题分析
你提供的代码存在两处关键错误:
cout << address(&address);是非法写法:你将指针变量address当作函数调用,还传入了address自身的地址,逻辑完全错误。- 未考虑内存访问合法性:直接硬编码地址访问,若该地址不属于当前进程可访问的内存区域,程序会直接崩溃。
正确的访问方式
如果确定0x0364DF00是当前进程有权限读取的合法内存地址,且存储的数据类型为int,可以这样修改代码:
#include <iostream> using namespace std; int main() { // 将内存地址转换为对应类型的指针 int* target_ptr = reinterpret_cast<int*>(0x0364DF00); // 解引用指针,获取地址中的内容 cout << *target_ptr << endl; return 0; }
重要注意事项
- 类型匹配:必须保证指针类型与地址存储的数据类型完全一致,否则会产生未定义行为(比如存储
double却用int*访问,结果会错乱)。 - 内存合法性:硬编码地址非常脆弱,若地址是
file1.cpp中局部变量的栈地址,程序运行时栈地址会动态变化,且局部变量销毁后访问会触发错误。 - 推荐替代方案:如果是同一个程序内的两个.cpp文件,建议用外部变量声明的方式:
- 在
file1.cpp中定义全局变量:int stored_data;(存储数据到这个变量) - 在
file2.cpp中声明外部变量:extern int stored_data;,直接通过变量名访问,无需硬编码地址,安全且可维护。
- 在
内容的提问来源于stack exchange,提问作者valaGQ237
相关产品推荐
相关产品推荐

