- 浏览: 464199 次
- 性别:
- 来自: 广州
-
文章分类
- 全部博客 (538)
- C/C++ Primer (69)
- Objective-C Primer (102)
- Python Primer (19)
- JavaScript Primer (1)
- Java Primer (37)
- PHP Primer (17)
- 泛 Linux (37)
- Shell Script (21)
- APUE (21)
- UNP__1&2 (19)
- NetWork (7)
- Oracle周边 (38)
- Mysql里边 (6)
- Windows技 (9)
- 简单算法 & 数据结构 (14)
- 设计模式 (6)
- GTK历程 (12)
- 工具使用 (25)
- 杂事 (23)
- 一些概念 (17)
- Web方面 (10)
- myCodeTools (9)
- ^未 竟$ (13)
- 硬件通信 (2)
- Games (1)
最新评论
原文:http://www.cnblogs.com/henryzc/articles/369502.html
sizeof()是操作符,不是函数。
http://blog.csdn.net/wild_fox86116/archive/2007/10/28/1851111.aspx
和网络传输也有联系
1、什么是字节对齐以及为什么要字节对齐。所谓字节对齐就是C/C++编译器为了加速CPU寻址速度而采用的一种策略,通常的表现是将结构中某些不足CPU字长的成员填入若干字节的垃圾值使整个结构的大小成为CPU字长的整数倍。(所谓CPU的字长,可以简单地理解为一个sizeof(int)的大小。)
2、字节对齐的例子。在此列出一段代码,附有相关注释,不多解释。
3、可以说字节对齐是一种以空间换时间的做法。但如果某种情况下,程序员需要将struct A的10000个成员写入文件,那么在32位系统中,这个文件就会浪费30000个字节的空间,浪费率达到了37.5%。这时候的解决方式是改变默认的字节对齐方式,具体实现是利用了#pragma链接器指令。下面的例子使用了1字节的对齐,也就是不对齐。
#pragma pack( push, 1 )
struct D // size: 1 + sizeof( int )
{
char c;
int n;
};
#pragma pack( pop )
该指令的使用方法不止此一种,更多信息请参考MSDN。
4、1字节的对齐还有其它一些魔术般的作用,譬如可将指令的机器码写入某种结构,然后使之执行。ATL的CWndProcThunk就采用了这种手段,参见atlwin.h。
sizeof()是操作符,不是函数。
http://blog.csdn.net/wild_fox86116/archive/2007/10/28/1851111.aspx
和网络传输也有联系
1、什么是字节对齐以及为什么要字节对齐。所谓字节对齐就是C/C++编译器为了加速CPU寻址速度而采用的一种策略,通常的表现是将结构中某些不足CPU字长的成员填入若干字节的垃圾值使整个结构的大小成为CPU字长的整数倍。(所谓CPU的字长,可以简单地理解为一个sizeof(int)的大小。)
2、字节对齐的例子。在此列出一段代码,附有相关注释,不多解释。
struct A // size: sizeof( int ) * 2 { char c; int n; }; struct B // size: sizeof( int ) * 3 { char c1; int n; char c2; }; struct C // size: sizeof( double ) * 2 { int n; double lf; };
3、可以说字节对齐是一种以空间换时间的做法。但如果某种情况下,程序员需要将struct A的10000个成员写入文件,那么在32位系统中,这个文件就会浪费30000个字节的空间,浪费率达到了37.5%。这时候的解决方式是改变默认的字节对齐方式,具体实现是利用了#pragma链接器指令。下面的例子使用了1字节的对齐,也就是不对齐。
#pragma pack( push, 1 )
struct D // size: 1 + sizeof( int )
{
char c;
int n;
};
#pragma pack( pop )
该指令的使用方法不止此一种,更多信息请参考MSDN。
4、1字节的对齐还有其它一些魔术般的作用,譬如可将指令的机器码写入某种结构,然后使之执行。ATL的CWndProcThunk就采用了这种手段,参见atlwin.h。
发表评论
-
float equal
2013-05-23 18:21 831- (BOOL)floatA:(float)f1 equalB ... -
C++序列化
2012-07-12 09:51 604http://hi.baidu.com/ewook/item/ ... -
C++著名内裤
2011-12-02 14:00 8211、C++各大有名库的介绍 ... -
C++写C
2011-09-06 17:23 682在C++中写C,标准头文件写法 #ifndef __AB ... -
errno.h
2011-05-05 14:27 713#define EPERM 1 ... -
__cplusplus
2011-04-21 15:09 750http://www.cnblogs.com/stonecra ... -
Pthread__常用
2011-04-21 11:46 859http://blogold.chinaunix.net/u/ ... -
常用预编译
2011-04-21 10:32 665#if defined(WIN32) || defined ... -
C++__容器
2011-04-18 10:16 570http://apps.hi.baidu.com/share/ ... -
C++模板
2011-03-29 14:27 635内容主要来至《钱能C++程序设计教程》&《C++ Pr ... -
交叉引用、前置声明
2011-03-02 09:40 814有两个类相互引用了,编译器报错。 原因是两个类交叉引用: A ... -
typedef的四个用途和两个陷阱
2010-12-14 12:34 667http://hi.baidu.com/changfeng01 ... -
第五届开源小组招新题目
2010-12-03 21:56 760这是学校的开源小组招新题。 08年时我是第二届的组长,不知不觉 ... -
string const char*
2010-12-02 16:13 788http://topic.csdn.net/u/2008092 ... -
CPP Container
2010-11-10 09:20 754延后整理。。。 -
C语言运算符优先级
2010-11-02 17:45 796优先级 运算符 ... -
point point
2010-11-02 17:23 635http://learn.akae.cn/media/ch23 ... -
位运算
2010-11-01 11:33 789千百年来,位运算始终没出现在我写的代码里,今天终于出现了。 ... -
Unix环境下操作特大文件
2010-11-01 11:03 627http://hi.baidu.com/jiangfeng11 ... -
GCC在C语言中内嵌汇编
2010-10-22 14:48 1374http://hi.baidu.com/liu_bin0101 ...
相关推荐
3. **字节对齐**:如果需要,非字节对齐的数据会被转换为字节对齐格式,方便传输和存储。 4. **传输**:编码后的数据通过网络发送到接收端。 5. **接收**:在接收端,数据首先被解码为字节对齐格式,如果需要的话。 ...
然而,在实践中,为了提高内存访问的效率和简便性,往往需要在内存中按照一定的规则排列数据,这种规则就称为字节对齐(Byte Alignment)。 字节对齐的目的是使得数据类型的访问更加高效。不同的硬件平台在存储空间...
### VS C++ 字节对齐方式详解 #### 一、引言 在计算机科学领域,内存管理是一项极其重要的任务,而字节对齐作为内存管理的一部分,在提高程序运行效率方面扮演着关键角色。本文将围绕“VS C++字节对齐方式”这一...
C语言内存字节对齐详解 在C语言中,内存字节对齐是指编译器为了提高程序执行效率和可移植性,而对结构体成员在内存中的存储方式进行的调整。这个调整是基于体系结构的对齐规则,旨在提高程序的执行效率和可移植性。...
字节对齐是一种编程策略,主要应用于C语言和C++中,目的是为了提高程序执行的效率和内存访问的性能。当结构体中的成员变量在内存中存储时,编译器会根据成员变量的类型和系统架构自动进行字节对齐,确保每个变量都能...
在IT领域,字节对齐是一项重要的概念,尤其是在编程、数据存储和计算机系统设计中。字节对齐指的是数据在内存或磁盘上的存放位置必须遵循特定的规则,以优化性能和兼容性。这个概念主要涉及到处理器架构、内存管理...
在计算机科学中,字节对齐(Byte Alignment)是一个至关重要的概念,特别是在处理数据结构,如结构体(Structures)时。它涉及到内存管理和效率优化,确保数据在内存中的存储方式能够快速有效地被处理器访问。以下是...
### 任意字节对齐分配内存 #### 一、引言 在计算机科学领域,内存管理是编程过程中不可或缺的一部分。合理的内存管理不仅能够提高程序运行效率,还能够避免潜在的错误。字节对齐作为内存管理的一个重要概念,是指...
字节对齐是一种在计算机编程中,特别是在C/C++编程中常见的优化策略,它涉及到如何在内存中组织数据,以确保高效访问和避免硬件错误。字节对齐的基本原理是根据数据类型及其大小来确定它们在内存中的起始位置,以...
字节对齐访问分析与理解 字节对齐访问是计算机科学中一个重要概念,它关系到计算机系统的性能和稳定性。下面我们将对字节对齐访问的原因、作用及相关注意问题进行分析和举例说明。 一、什么是对齐访问? 字节对齐...
字节对齐详解 在计算机科学中,字节对齐是一种重要的概念,它对程序的性能和内存使用产生了巨大的影响。字节对齐是指在计算机内存中,对各种类型的数据按照一定的规则排列,以便提高访问效率和减少内存占用。 字节...
**系统级编程:字节对齐的理解与实践** 在计算机科学中,系统级编程涉及到操作系统、硬件交互以及底层数据处理等方面。在这个过程中,一个至关重要的概念是“字节对齐”,它直接影响到程序的性能、内存利用率以及...
字节对齐是C语言在数据存储和内存访问效率方面的重要概念。在讲解字节对齐之前,我们首先要了解计算机中的数据存储方式。计算机系统中,数据通常存储在以字节为单位的内存空间中,每个字节拥有独立的地址。字节对齐...
内存字节对齐是一种编程实践中遵循的规则,它涉及到如何在计算机内存中安排数据结构的成员,以便提高访问效率和兼容性。理解内存对齐至关重要,因为它直接影响到程序的性能和跨平台兼容性。 首先,我们要明白什么是...
### 嵌入式编程规范:字节对齐详解 #### 概述 在嵌入式系统开发过程中,为了提高程序运行效率以及内存利用效率,字节对齐(Byte Alignment)是一个非常重要的概念。字节对齐是指在计算机内存中,数据结构中的各个...
C语言字节对齐问题详解 C语言中的字节对齐问题是指在编译器将C语言程序编译成机器代码时,对变量的存储方式进行调整,以提高存取效率和减少存储空间。字节对齐是指在内存中将变量按照一定的规则排列,以便在访问...
通过分析提供的代码示例及其描述,我们可以深入了解字节对齐(Byte Alignment)这一概念,并探讨其在不同编译器设置下对结构体内存布局的影响。 ### 字节对齐概述 字节对齐是指数据在存储时按照某种特定的单位进行...
### C++中的字节对齐与结构体大小详解 #### 一、引言 在C++编程中,理解和掌握字节对齐的概念对于优化程序性能至关重要。尤其在处理内存管理和结构体时,字节对齐直接影响到数据的存储布局及访问效率。本文将详细...
在某些处理器架构中,字节对齐对于性能至关重要,因为它可以优化内存访问并减少数据处理的潜在问题。例如,如果一个32位变量没有正确对齐,那么读取或写入该变量可能会导致额外的内存访问,从而降低效率甚至引发错误...
在计算机编程中,字节对齐是一个非常重要的概念,特别是在涉及到结构体的内存布局时。结构体的`sizeof`操作符返回的是整个结构体在内存中占用的字节数,而这个值并不总是简单地等于所有成员大小的总和。这是因为...