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

C++中间地址存储值的疑问:指针与内存字节访问问题

C++指针与内存地址问题解析
  • int* p = &sum的地址是否为90000000?
    只有在你参考的教学图示中明确将sum的起始地址标注为90000000时,这个假设才成立。实际编程场景中,变量的内存地址由操作系统动态分配,完全不固定,所以这只是用于理解内存模型的教学示例值。

  • 若&sum确实是90000000,解引用地址90000001的指针会得到什么?
    首先要明确:直接将90000001强转为指针并解引用属于C++标准定义的未定义行为,没有可预期的固定结果。
    从教学图示的内存模型角度(假设sum是4字节int,采用小端存储):90000000是sum的起始地址,对应存储的是int值的最低字节;90000001是第二个字节的地址。如果用char*类型指针解引用,会得到该地址对应的1字节值;但如果用int*类型指针解引用,属于访问未对齐的int地址,不仅结果不可控,还可能引发硬件异常。

  • 这些地址是否指向同一4字节内容?
    不是。sum作为4字节int,它的内存范围是从起始地址90000000到90000003(包含两端)的连续4个字节。90000001只是这个4字节块中的单个字节地址,仅对应1字节的内存单元,和整个4字节的sum变量不是同一个内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:46:26