说明:如果你看到了这篇,请略过。

struct是复合类型。

其中的成员在内存中的分布都是对齐的。

这个对齐的意思是,struct的sizeof运算结果必定是其最大类型长度的整数倍。

--注意,如果struct内部还有struct的话,应该将内部struct的成员拆开来看。而不应将内部struct看成一个整体成员(该角度仅限于size上)。

由于对齐的原则,成员的顺序会涉及到整体的内存占用。

极其特别的,C支持对struct中的成员指定占用的bit数(注意,是bit,不是byte)--不能超出类型最大bit数。

这种操作在嵌入式开发中非常有用,因为可以充分利用内存。

C struct的内存对齐的更多相关文章

  1. Net的struct的内存对齐问题

    很少有人谈起struct的内存对齐问题, 就是在很多C#书中, 也很少提及. 但在实际应用中, 如果不注意内存对齐, struct比较大的话, 则会浪费一定的内存.    先从一个实例看起. publ ...

  2. c语言中struct的内存对齐

    为了让CPU能够更舒服地访问到变量,struct中的各成员变量的存储地址有一套对齐的机制.这个机制概括起来有两点:第一,每个成员变量的首地址,必须是它的类型的对齐值的整数倍,如果不满足,它与前一个成员 ...

  3. C 语言结构体 struct 及内存对齐

    struct 结构体 对于复杂的数据类型(例如学生.汽车等),C 语言允许我们将多种数据封装到一起,构成新类型. 跟面向对象语言中的对象相比,结构体只能包含成员变量,不支持操作. #include & ...

  4. 内存对齐-C语言struct内存占用问题

    转1个写的比较全面的. http://hubingforever.blog.163.com/blog/static/17104057920122256134681/ 本文编辑整理自:http://hi ...

  5. struct内存对齐1:gcc与VC的差别

    struct内存对齐:gcc与VC的差别 内存对齐是编译器为了便于CPU快速访问而采用的一项技术,对于不同的编译器有不同的处理方法. Win32平台下的微软VC编译器在默认情况下采用如下的对齐规则:  ...

  6. 【转】C/C++ struct/class/union内存对齐

    原文链接:http://www.cnblogs.com/Miranda-lym/p/5197805.html struct/class/union内存对齐原则有四个: 1).数据成员对齐规则:结构(s ...

  7. 利用php unpack读取c struct的二进制数据,struct内存对齐引起的一些问题

    c语言代码 #include <stdio.h> struct test{ int a; unsigned char b; int c; }; int main(){ FILE *fp; ...

  8. struct内存对齐

    内存对齐其实是为了在程序运行的时候更快的查找内存而做的一种编译器优化. 我们先看这样一个例子: #include <iostream> using namespace std; struc ...

  9. 内存对齐与ANSI C中struct型数据的内存布局 【转】

    转自:http://blog.chinaunix.net/uid-25909619-id-3032209.html 当在C中定义了一个结构类型时,它的大小是否等于各字段(field)大小之和?编译器将 ...

随机推荐

  1. 以 DirectUI 方式实现的ImageButton

    原文链接: http://www.cnblogs.com/hoodlum1980/archive/2011/02/15/1954779.html 这是一篇比较简单的文章,主要讲解的是用 DirectU ...

  2. webpack-dev-server的自动更新配置

    一.背景 测试发布一个项目,修改jsx中的内容,页面不自动更新. 每次必须执行npm run build:然后执行npm run start. 脚本如下: "scripts": { ...

  3. 黑马day18 鼠标事件&amp;图片变大

    有时候我们在淘宝网或者京东商城上浏览要购买的商品的时候当把鼠标移动到图图片上的时候会发现图片放大.然后鼠标移动,图片也会跟着移动,接下来我就使用jquery来实现这样的效果: 这是图片文件夹: < ...

  4. selenium+phantomJS爬虫,适用于登陆限制强,点触验证码等一些场景

    selenium是非常出名的自己主动化測试工具,多数场景是測试project师用来做自己主动化測试,可是相同selenium能够作为基本上模拟浏览器的工具,去爬取一些基于http request不能或 ...

  5. Wireshark分析网络慢

        tcp.analysis.retransmission tcp.flags.reset==1

  6. eclipse中的项目受svn管理

    1.我们在启动Eclipse的时候都会有例如以下图提示: 假设我们直接这样输入目录的名字,这个文件会在eclipse安装目录的同一级自己主动生成这样一个名字叫做njgzw的目录.接下来我们每次启动都用 ...

  7. 基于乐观锁的配置server与XServer的交互

    XServer与配置server,配置server保存有XServer的配置文件里的信息. 怎样在项目启动时.让XServer从配置server中获取到自己的配置信息,并达到通信资源的节省与控制. 通 ...

  8. mysql删除账户

    mysql> select user,host,password from user; +------+-----------+--------------------------------- ...

  9. angular学习笔记(十六) -- 过滤器(2)

    本篇主要介绍angular自定义的过滤器: 直接看例子: <!DOCTYPE html> <html ng-app="MyFilter"> <head ...

  10. 每日英语:Cyclists Live Six Years Longer

    Cycling does the body good. New data from Tour de France cyclists finds that those athletes live an ...