网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
03月20日漏签0天
c语言吧 关注:801,969贴子:4,376,740
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 3回复贴,共1页
<<返回c语言吧
>0< 加载中...

求助数组内存溢出问题

  • 只看楼主
  • 收藏

  • 回复
  • 太空牛仔life
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
请问假如一个int型数组溢出了地址值是怎么来算的,比如定义了int[7],然后我以%d形式输出&int[7]后发现其等于1353709940,然后以%d形式输出&int[0]后发现其等于1353709912,也就是说溢出数组元素的地址值是和原数组连续的,但是如果我定义了数组int[7],不应该是已经开辟了一块空间了,然后由数组元素个数7进行规范int类型进行空间分配嘛,不应该是只开辟了sizeof(int)*7字节大小的空间么,刚学,所以啥都不懂,估计我上面的问题描述也是漏洞百出,但是确实已经尽力描述了,希望能指点一下,谢谢。


  • 君不修
  • 马猴烧酒
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
没看懂,&int[7]和&int[0]不是差了28吗,4*7个字节


2026-03-20 15:44:14
广告
不感兴趣
开通SVIP免广告
  • GTA小鸡
  • 吧主
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
C语言规定紧邻数组末尾的下一个地址是有效的。例如int a[7],那么&a[7]是有效的地址,它一定存在。
注意是地址有效,而不是地址可以访问,这两者不同。可以将该地址赋给指针,可以与其它地址比较,但不能对地址解引用。
以下操作是合法的:
int *p = &a[7];
if (a + i < p)
以下操作是非法的:
a[7] = 0;
int *p = &a[7];
if (a[i] > *p)


  • 星之天仪
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
开辟了一块空间的意思是这块空间可以安全地为你所用,但本身空间就一直在那里。&a[7]表示了从a的起始地址开始偏移7个int长度的位置。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示