当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 上C++实验课的时候,坐在我旁边的同学问了我一个问题:
 

 

    摘要:其实 msdn 里面已经很明确的说明了,不仅仅需要 tts_close (0x80),而且还要让你自己实现 xp 风格,也就是下面常用的两种方法: 1、在可执行文件里插入一个资源类型为 24,id 号为 1 的资源实现 xp 风格,资源 1 的内容见方法 2。2、在应用程序目录添加一个和应用程序同名的.exe.manifest文件,内容如下:<?xml version="1.0&q......
 ·深入quickreport(一)    »显示摘要«
    摘要:深入quickreport(一) 作者:董维春 (本文已在《csdn开发高手》04年第一、二、三期上发表,应广大网友的要求,经编辑同意,发表在csdn作者本人文档中,略有修改,但仅即于此,未经csdn或作者本人同意任何个人与网站不得转载、摘抄,否则任何涉及到版权的行为后果自负) 报表是数据库应用程序的基本组成部分之一,完整的数据库应用程序总要提供报表功能。与传统的数据库应用程序设计工具相比,c++......


C语言结构体中的数据对齐
上c++实验课的时候,坐在我旁边的同学问了我一个问题:

{ 【程序编程相关:经典人生故事 4

struct 【推荐阅读:为你的 Blog 添加“状态栏文本”功能

int b; 【扩展信息:世界500强面试题(经典)

char a;

double c;

} sa;

其中sizeof(char) =1; sizeof(int) = 4; sizeof(double) = 8; 所以sizeof(sa)应该等于1+4+8=13才对,但是当她编程输出sizeof(sa)的值却是16,她问我为什么?

我把我所知道的告诉了她:为了加快cpu的存取速度,c++编译器在处理数据时经常把结构变量中的成员的大小按照4或8的倍数计算,这就叫数据对齐(data alignment).sizeof(sa)=16就是因为这个原因,并不是程序的错误,而是编译器为了使数据对齐而在结构中加上了3个字节的空位造成的.这样做可能会浪费一些内存,但理论上速度快了.

回答完她的问题后,我又给自己提出了一个问题,数据究竟是怎么对其的呢?这个问题,我也不知道,所以回到寝室我做了几个实验,并且查了相关的资料,最终得出了结论.

首先,应该说明的我的开发环境是winxp+vc6,因为不同的操作系统与不同的编译器,得出的结果可能不一样.但是不同系统的原理应该是一样的,所以希望我所做的这些努力也能对使用其它开发环境的朋友有所帮助.

struct

{

       int a;

       char b;

       } sa;

       struct

{

              int a;

              char b;

              double c;

       } sb;

       struct

{

              int a;

              double c;

              char b;

       } sc;

输出结果:sizeof(sa)=8, sizeof(sb)=16, sizeof(sc)=24;


...   下一页
 ·动态生成java代码(二)    »显示摘要«
    摘要:/* * 创建日期 2004-7-2 * 创建人 hongsoft * 文件名 testcompile.java */package com.hongsoft.test; import java.io.*; //定制的类装入器public class testcompile extends classloader{ string _compiler; string _classpath; publ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE