码迷,mamicode.com
首页 > 其他好文 > 详细

内存对齐问题的解析

时间:2014-10-17 01:33:43      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   ar   strong   sp   数据   

      存储器的内存布局一般都是对齐的,即是按字对齐或半字对齐的方式访问的,优点是可以避免内存的浪费同时也有很高的内存操作和数据处理的速度。

      如果访问非对齐的内存数据:

  1. 产生不可预测的结果;
  2. 忽略造成访问不对齐的低地址位;
  3. 上一步后,使这些低地址位控制装载数据循环后移。

先看下面这些问题,你都知道这些结构体所占内存的大小以及结构体成员的实际内存分布吗?

结构体所占内存和实际使用内存是两个完全不同的概念,

结构体所占内存大小可以使用sizeof(type)测出,而实际使用的内存大小必须通过offsetof(type,member)测量偏移量来计算。使用说明如下:

bubuko.com,布布扣

下面是一些练习:

 1 /*所占内存大小为8个字节*/
 2 struct node1
 3 {
 4     int a;      
 5     char b;     
 6     char c;     
 7 }stu1;
 8 /*所占内存大小为12个字节*/
 9 struct node2
10 {
11     char b;
12     int a;
13     char c;
14 }stu2;
15 /*所占内存大小为6个字节*/
16 struct node3
17 {
18     char a;
19     short b;
20     char c;
21 }stu3;
22 /*所占内存大小为24个字节*/
23 struct node4
24 {
25     long a;
26     char *b;
27     short c;
28     char d;
29     short array[5];
30 }stud4
31 /*这里含有柔性数组(不占内存),所占内存大小为8个字节*/
32 struct node5
33 {
34     int a;
35     char c;
36     int array[];
37 }stu5;

 

内存对齐问题的解析

标签:style   blog   http   color   使用   ar   strong   sp   数据   

原文地址:http://www.cnblogs.com/philospy/p/4029870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!