也谈内存对齐
在最近的项目中,我们涉及到了“内存对齐”技术。对于大部分程序员来说,“内存对齐”对他们来说都应该是“透明的”。“内存对齐”应该是编译器的“管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上。但是C语言的一个特点就是太灵活,太强大,它允许你干预“内存对齐”。如果你想了解更加底层的秘密,“内存对齐”对你就不应该再透明了。 一、内存对齐的原因 大部分的参考资料都是如是说的: 1、平台原因(移...
在最近的项目中,我们涉及到了“内存对齐”技术。对于大部分程序员来说,“内存对齐”对他们来说都应该是“透明的”。“内存对齐”应该是编译器的“管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上。但是C语言的一个特点就是太灵活,太强大,它允许你干预“内存对齐”。如果你想了解更加底层的秘密,“内存对齐”对你就不应该再透明了。 一、内存对齐的原因 大部分的参考资料都是如是说的: 1、平台原因(移...
类型(type) 1、类型分为: a) object type — types that fully describe objects b) function type — types that describe functions c) uncomplete type — types that describe objects but lack information need...
标识符(identifier) 1、一个标识符可以表示: a) 对象(object) b) 函数(function) c) 结构体(struct)的标签(Tag)\[注1] d) 结构体的成员 e) 联合体(union)或枚举类型(enumeration) f) 类型别名(typedef) g) 标签(label) h) 宏(macro) i) 宏参数(macro parameter) 同一个标识...
标准都是条条框框的,以严谨著称,语言晦涩难懂。这也是大多数人不愿意“接近”它的原因。但它吸引我的最重要原因恰恰是“标准”二字,我觉得我能从这个标准中找到一些“闪光点”,而这些“闪光点”又恰恰是能让我有所提高的地方。 1、翻译环境 C Source文件是以文本形式存在的,将之转变成可执行程序的过程,我们管之叫“翻译”。C语言的翻译不是一蹴而就的,一般需要两遍才能达到目的,第一遍称为“预处理”,预处理...
来学习一些地道的日常美语吧。 一清早起来,Alex洗漱完毕,发现Tony仍不见清醒,就大声说: "Tony! We gotta go! It's burning down!" Tony正在做着美梦,被吵醒,心里自然很烦,遂说: "Don't bother me!" 如果这时Tony只是贪睡,则可能会这样说: Tony : Please give me five more minutes! Tony...
在网上发现了这篇“华为的冬天”,虽说是几年前的文章,但是读完后仍很有感触,遂转帖之。 公司所有员工是否考虑过,如果有一天,公司销售额下滑、利润下滑甚至会到破产的地步,我们怎么办?我们公司的太平时间太长了,在和平时期升的官太多了,这也许就是我们的灾难。泰坦尼克号也是在一片欢呼声中出的海。而且我相信,这一天一定会到来。面对这样的未来,我们怎样来处理,我们是不是思考过。我们好多员工盲目自豪,盲目乐观,如...
大部分的关于C的著作都提到ANSI C Standard,但我相信少有C程序员真正细致阅读过ANSI C标准(当然了对于作C编译器的程序员来说这个标准肯定是烂熟于胸了^\_^),在这个系列的文章中我将和大家一起浏览一下ANSI C标准(C99,以下称标准),呵呵,当然也不能面面俱到,只是“走马观花”。 1\. 什么是“标准”(这里指编程语言标准) 按照comp.lang.c的C FAQ的意思:“标...
最近同寝室的一位朋友参加了一次某国内著名通讯公司的社招活动,回来后他简单给我讲了些他的经历,听后觉得有些东西是很值得自己思考的,就列举了出来。 那个公司的社招共1轮笔试,3轮面试(一轮技术面试和2轮综合面试)。笔试自不必说,对于有着多年工作经验的我的同事自然不在话下,技术面世也很顺利通过。在下面2轮的综合面试中,首先是让你自我介绍,我想这也是面试官在发现你问题的阶段。然后两个面试官几乎问着相同的问...
这是一篇从班级校友录上摘录下来的文章,删节一部分,我擅自加了个题目“人生数字”,也不知恰当与否。 23岁的时候,你毕业了,你第一份工作的薪水是1500块,转正以后变成2000块。工资总花得一分钱不剩,盼着发薪的日子。过了一年你跳槽了,工资变成3000块,你穿的衣服开始变贵了,吃的东西开始变好了,不过有一样没有变,工资还是花得一分钱不剩。这时候你谈恋爱了,你为了交女朋友,一个月要向朋友借1000块,...
内存问题是C程序员永久的话题,也是最能让C程序员心痛的话题。内存bug即隐秘,危害又大,而且往往当你解决了它之后,你会发现你的错误是多么的低级。以我为例,看下面的两个case: CASE1 背景: 配置信息读取 Bug现象: 通过打印语句观察到,在配置读取中间时刻,某一指针突然被置为NULL,出core。 耗时: 6小时 问题所在及分析: 经过6小时的不懈努力,终于发现了这一让我哭笑不得的低级错误...