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

C++输入int型整数输出变为256 代码运行异常原因问询

问题原因说明

核心问题是栈缓冲区溢出覆盖了相邻变量的内存,具体推导如下:

  • 你定义的char b[3]仅能容纳2个有效字符+1个字符串结束符\0,当你输入3位字符385时,cin会自动在输入内容末尾追加\0,总共需要4字节存储空间,超出了b数组的容量,发生越界写入。
  • 同作用域内的局部变量按定义顺序反向存放在栈内存中,先定义的int a地址高于后定义的b数组,b数组越界写入的第4个字节(也就是\0)刚好落在a的最低有效字节的内存地址上。
  • 你输入的a初始值472对应的十六进制为0x000001D8,小端模式下最低有效字节存储的是0xD8,被\0(值为0x00)覆盖后,a的取值变为0x00000100,转换为十进制就是256,和你观察到的输出结果完全一致。
修复方案
  • 将char b[3]修改为char b[4],预留足够空间存储3位字符加结束符。
  • 更推荐直接使用std::string类型存储字符串,无需手动管理容量,从根源上避免越界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 16:06:03