当前位置:  技术问答>linux和unix

c,c++问题

    来源: 互联网  发布时间:2016-05-24

    本文导语:  小弟对以下问题不懂,望高手帮忙.谢谢! 1,关于C中的结构体中的内存对齐问题,什么是对齐,有什么优点及实现方法,     如果,没有对齐的话,会有什么后果? 2,前两天看C++的书,书上写NEW/DELETE操作在自由存储区域执行,...

小弟对以下问题不懂,望高手帮忙.谢谢!

1,关于C中的结构体中的内存对齐问题,什么是对齐,有什么优点及实现方法,
    如果,没有对齐的话,会有什么后果?


2,前两天看C++的书,书上写NEW/DELETE操作在自由存储区域执行,而MALLOC/FREE在
   堆上执行,请问自由存储区域与堆有区别,其优点是什么?

谢谢...

|
正如这段代码所测试的内存对齐(gcc编译器要求的对齐整数是1,2,4)
为struct Test分配的内存方式是char|///|int|char|///  ,int是这个结构体中要求字节对齐的字段,它的地址要求是4的整倍数,所以在第一字段和第二字段之间有3B的padding填充,并且要求结构体的总大小是最宽基本类型成员所占内存大小的整倍数,所以在在最后一个字段后再填充3B,最终Test占1+3+4+1+3=12;

为struct Fun 分配的内存方式是char|char|//|int,占1+1+2+4=8;
C/C++ code
#include 

typedef struct Test
{
    char c1;
    int n;
    char c2;
}Test;

typedef struct Fun
{
    char c1;
    char c2;
    int n;
}Fun;

int main()
{
    printf("%dn", sizeof(Test));
    printf("%dn", sizeof(Fun));
    return 0;
}




[root][~]# gcc -o ctest ctest.c 
[root][~]# ./ctest 
12 

[/Quote]

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 简单问题简单问题简单问题简单问题
  • 网页的编码问题!或者java的编码问题,由此引出一条解决中文问题的思路 iis7站长之家
  • 小问题,急问题,重大问题!!!
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 弱弱的一问,linux下的中文问题及网络问题,分不是问题
  • 八个问题帮你快速了解Docker
  • 请教两个小问题:一个cgywin下使用vi的问题,另一个socket的问题
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • 网页的编码问题!或者java的编码问题,由此引出一条解决中文问题的思路
  • nginx Windows版相关问题及使用说明
  • 死锁的问题 多级锁定问题 循环锁定问题
  • vs2010下禁用vmware的方法以及解决vmware插件导致vs2010变慢的问题
  • [问题]双系统出现的问题!求问题的原因和解决办法!
  • Linux下时钟同步问题:Clock skew detected原因分析及解决方法
  • 初学者问题。一个是编译hello world的问题,一个是配置ssh的问题
  • c/c++服务器程序内存泄露问题分析及解决
  • C程序问题:哪个高手帮我解释下下面的问题,主要是a[0]和&[0] 的区别 和编译器的问题??
  • ​部署 Docker 前必须问自己的四个问题
  • swing的问题还是jbuiler的问题??
  • spring的事务类型及spring和hibernate可能导致的问题分析
  • 菜鸟第一次安装红帽子7.2的一箩筐问题。每个问题会开个帖子,各放100分!请有安装经验的老鸟们帮忙解决。第二个问题:什么是LILO?怎么样


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3