Chinaunix首页 | 论坛 | 博客
  • 博客访问: 899421
  • 博文数量: 453
  • 博客积分: 7865
  • 博客等级: 少将
  • 技术积分: 5673
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-29 16:21
个人简介

时光荏苒..

文章分类
文章存档

2015年(46)

2014年(22)

2013年(68)

2012年(218)

2011年(99)

分类: C/C++

2013-01-18 14:36:20

ubuntu 下 gcc --version 4.4.3

sizeof(int *) = 8;

sizeof(long) = 8;

 

跟正常预期的 非常不同。 非常另类的编译器啊, 简直就是害虫啊。

暂时不考虑 这个编译器的情况!  还是 以 正常编译器 期望值来 解释问题。

 

分析:

int *ptr;

sizeof(ptr) = 8;

p ptr  (int *)0x601030;

p ptr+1 (int *) 0x601034;

相差是4 而不是8    :  因为 +1  所增加的 是 指向的类型的 大小,而不是 自己本身的大小!  因此 是 4   因为sizeof(int) 为4.    虽然 sizeof(int *)是8.

 

在 上面的 编译器下:

改的只是 s.i 及其下面的4 字节对齐的地址的数值。

 

根本没有修改 s.p 因此也不会 崩溃。

 

 

 

 

 

 

 

阅读(1065) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~