You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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文件,建议用外部变量声明的方式:
    1. 在file1.cpp中定义全局变量:int stored_data;(存储数据到这个变量)
    2. 在file2.cpp中声明外部变量:extern int stored_data;,直接通过变量名访问,无需硬编码地址,安全且可维护。

内容的提问来源于stack exchange,提问作者valaGQ237

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:52:14