"对几组sizeof信息的分析"一文补充

原创 2004年07月09日 18:39:00
实例1
C++ Reference对sizeof运算符的描述信息如下:
The sizeof operator is a compile-time operator that returns the size, in bytes, of the argument passed to it.
也就是说sizeof的输出信息是在编译期间确定的,同时,没有限定编译器对传递给sizeof的表达式具体作何种处理,而实际上,编译器一般的处理方式是只取传入表达式的类型信息进行输出,下面的例子可以说明这一点。

//sizeofdemo1.c
#include <stdio.h>

int
 func(int* pi)
{

    printf("in func/n");
    *
pi++;
    return
 0;
}


int
 main()
{

    int
 i = 0;

    printf("sizeof(func(&i)) = %d/n", sizeof(func(&i))); //这里完全与sizeof(int)等价
    printf("Current value of i is: %d/n", i);
    printf("sizeof(i++) = %d/n", sizeof(i++)); //这里也是
    printf("Current value of i is: %d/n", i);

    printf("sizeof(1.0) = %d/n", sizeof(1.0));

    return
 0;
}


因此,我们不要试图在sizeof中对变量进行修改(在VC中进行程序开发的时候也需要注意,不要试图在ASSERT等宏中进行变量的修改操作,否则,在Release方式下编译的时候,将完全忽略你的程序代码,引起十分难于发现的错误)

实例2
使用位域(bit-field)的情况(C++ Primer说:有一种被称为位域的特殊的类数据成员,它可以被声明用来存放特定数目的位。在类体中相邻定义的位域,如果可能的话,它们会被放在同一个整数的连续位中,并以此提供空间压缩)

//sizeofdemo2.c
#include <stdio.h>

typedef struct
 tagSTRUCT{
    unsigned char
 x:4; //表示占用4个bit
    unsigned char y:4;
}
 STRUCT;

int
 main()
{

    printf("sizeof(STRUCT) = %d/n", sizeof(STRUCT)); //(4 + 4) / 8 = 1

    return
 0;
}

sizeof计算对象所占内存的大小详解

sizeof 怎样计算整型数组、字符数组、二维数组、类(是否为菱形继承、是否为虚继承等各种情况)的大小,非常详细的解释!!!...
  • skyroben
  • skyroben
  • 2016年11月17日 22:23
  • 1206

完整版java读取apk、ipa包名、版本名、版本号等信息

有时候,我们上传apk或者是ipa文件的时候,是需要读取到里面的一些信息的,比如软件的包名,以及其版本信息等。在网上搜索了一下资料 , 找了很多版本,对于apk文件的版本号,一直读取不到,在这里,笔者...
  • moyanxuan_1993_2_24
  • moyanxuan_1993_2_24
  • 2016年05月06日 11:14
  • 23626

如何用插值法补齐缺失的数据

在我做的大气污染报表系统中,由于原始数据缺失,经常出现一些负数或者0的大气浓度,导致最后生成的曲线很丑,会画到水平轴以下。将这些错误的数据当错缺失数据处理,需要采取一定的手段填充。缺失的数据采取插值法...
  • rdhj5566
  • rdhj5566
  • 2017年01月13日 16:57
  • 2211

【总结】 - 几组相关概念的对比分析(补充中...)

各语言相近概念对比分析
  • whamazens
  • whamazens
  • 2015年03月09日 00:10
  • 578

access乱码一文信息

  • 2013年12月14日 23:06
  • 81KB
  • 下载

对“仅通过崩溃地址找出源代码的出错行”一文的补充与改进

转自: http://www.vckbase.com/index.php/wv/1192.html 读了老罗的“仅通过崩溃地址找出源代码的出错行”(下称"罗文")一文后,感觉该文还是可以学到不少...
  • xiao_0429
  • xiao_0429
  • 2014年06月10日 12:59
  • 652

云计算开源平台架构横评(根据开源中国社区 小李飞刀 一文补充)

云计算是个IT界火热的词汇,开源云计算更是被认为是IT的趋势。我们熟知的几个IT巨头的云计算平台,如亚马逊EC 2、IBM的蓝云、微软的Azure、Sun Cloud等,那么开源云计算的平台又有哪些呢...
  • quan123hao
  • quan123hao
  • 2016年07月01日 16:35
  • 414

苦于崩溃(2) ------对“仅通过崩溃地址找出源代码的出错行”一文的补充与改进

转自:http://www.vckbase.com/document/viewdoc/?id=1473读了老罗的“仅通过崩溃地址找出源代码的出错行”(下称"罗文")一文后,感觉该文还是可以学到不少东西...
  • hamigua_12
  • hamigua_12
  • 2011年06月20日 22:07
  • 277

对“仅通过崩溃地址找出源代码的出错行”一文的补充与改进

读了老罗的“仅通过崩溃地址找出源代码的出错行”(下称"罗文")一文后,感觉该文还是可以学到不少东西的。不过文中尚存在有些说法不妥,以及有些操作太繁琐的地方 。为此,本人在学习了此文后,在多次实验实践基...
  • hazy
  • hazy
  • 2012年10月24日 16:36
  • 657

对“仅通过崩溃地址找出源代码的出错行”一文的补充与改进

对“仅通过崩溃地址找出源代码的出错行”一文的补充与改进 分享到:新浪微博腾讯微博更多0 收藏 发布日期: 2005-05-19 09:22 浏览次数: 10...
  • aasmfox
  • aasmfox
  • 2015年07月15日 10:54
  • 346
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:"对几组sizeof信息的分析"一文补充
举报原因:
原因补充:

(最多只允许输入30个字)