
C/C++编程经验
文章平均质量分 51
buhui912
热爱生活,好好工作。
展开
-
Effective C++ 3rd 的一点评论-----最有效的学习C++的方式
今天终于把作业作完了(可能还有地方要返工),Effective C++ 第 3 版读完了,写了几万字的评论。如我给编辑交稿的 email 里所写:我觉得评注这个工作比翻译难做。作者细节上讲的非常清楚,大部分地方都不觉得有必要再加注解。我想跟这本书反复写了 10 年有关。所以很多页我都没留评注,真的不知道可以写啥。编辑原想每页中英分列排版,我是不建议这样的。除了少部分评注,针对个别代码段,或转载 2012-08-31 16:41:33 · 551 阅读 · 0 评论 -
armcm3权威指南笔记----arm编程中地址未对齐方面的影响
P152当使用C开发程序时,推荐开启CM3的双字对齐管理机制(在NVIC配置与控制寄存器中,把STKALIGN置位),代码形如:#define NVIC_CCR ((volatile unsigned long *)(0xE000ED14)) *NVIC_CCR = *NVIC_CCR | 0x200; //设置STKALIGN位STKALIGN 的名词解释P306在响应异常的原创 2013-11-21 15:15:47 · 2250 阅读 · 0 评论 -
uclinux与linux的不同
题外话:感觉通过比较uclinux与linux的不同,能让我更加深入地理解linux的虚拟内存机制,以及它给应用程序编程带来的极大的便利。可执行程序的加载 在普通的Linux中,虚拟内存技术的使用使我们不必关心一个应用程序是从什么地址开始的。 即使所有的应用程序都使用同一个连接脚本配置。 也就是说,即使它们使用的虚拟地址是重叠的,经过页表和页目录转载 2013-11-06 16:03:14 · 1036 阅读 · 0 评论 -
嵌入式编程复杂性
搜索关键词:嵌入式编程 无MMU 调试复杂嵌入式往往没有操作系统支撑,或者因为有操作系统支撑,但因为种种的限制,操作系统提供的功能少得可怜。所以,很多代码不能像PC编程那样天马行空,任意驰骋。今天就聊聊内存分配的问题,内存碎片,可能大家都不陌生。然而在嵌入式系统里,最怕的就是内存碎片,也是系统稳定的头号杀手。我曾经做了一个项目,系统中有很多的malloc和free,尺寸不一,从60多个字节转载 2013-11-18 13:12:27 · 957 阅读 · 0 评论 -
二叉树迭代器算法
二叉树(Binary Tree)的前序、中序和后续遍历是算法和数据结构中的基本问题,基于递归的二叉树遍历算法更是递归的经典应用。假设二叉树结点定义如下:123456// C++ structNode { intvalue; Node *left; Node *right;}转载 2013-08-23 15:36:37 · 2058 阅读 · 0 评论 -
linux红黑树实现
Linux内核红黑树的算法都定义在linux-2.6.38.8/include/linux/rbtree.h和linux-2.6.38.8/lib/rbtree.c两个文件中。 1、结构体 [cpp] view plaincopyprint?struct rb_node { unsigned long rb_parent_color; #def转载 2013-08-23 15:47:30 · 1027 阅读 · 0 评论 -
利用多核多线程进行程序优化
样例程序程序功能:求从1一直到 APPLE_MAX_VALUE (100000000) 相加累计的和,并赋值给 apple 的a 和 b ;求 orange 数据结构中的 a[i]+b[i ] 的和,循环 ORANGE_MAX_VALUE(1000000) 次。说明:由于样例程序是从实际应用中抽象出来的模型,所以本文不会进行 test.a=test.b= test.b+su转载 2013-05-28 16:24:31 · 972 阅读 · 0 评论 -
GCC警告选项理解
GCC警告选项对我们及时找出代码中BUG,改善代码品质很有帮助。听说高手们对每个警告选项都很熟悉,能灵活运用各个警告选项来分门别类地过滤代码中的BUG信息。1../SRC/libpjmacl/pjmacl_jaccmd.c:1661: 警告: dereferencing type-punned pointer will break strict-aliasing rulespjma原创 2013-02-18 14:00:35 · 17682 阅读 · 0 评论 -
工业级的内存拷贝函数实现
写一个函数,完成内存移动,并为其写一个简单的测试用例来进行测试。 够简单的吧?有的同学很快就写出了答案,详见程序清单1与程序清单2。 程序清单 1 V0.1版程序void MyMemMove(char *dst,char *src,int count){ while(count--) { *dst++ = *src++转载 2013-02-06 20:01:45 · 1010 阅读 · 0 评论 -
阅读linux内核代码的一大好处
大家可能都在想现在linux内核的学习到底对自己工作能带来多少好处。如果自己不是搞linux内核相关的工作,要不要去看内核那些深奥的代码。我的HPC组的一些经历能很好地给出一点启发吧。(我的讲话方式比较喜欢联想一些其他的东西,貌似这些东西跟我谈的主要话题也很有关系)做HPC项目时,富士通理研所把他们的PJSD模块整个结构设计文档发给我们,看看我们能不能提供些更好的建议,怎么原创 2013-02-06 17:18:15 · 3707 阅读 · 0 评论 -
PTmalloc hacking
--[ CONTENTS 1 - Preface 2 - Introduction 2.1 - KiddieDbg Ptmalloc2 2.2 - SmallBin Corruption 2.2.1 - Triggering The HoL(e) 2.2.2 - A More Confusing转载 2012-11-27 22:38:21 · 1852 阅读 · 0 评论 -
什么是类型安全
编程语言的最终梦想:静态类型安全常听人说“强类型”。但个人对强类型都有不同的理解。有的认为C++就是强类型,有的认为C也是强类型。因为它们都有类型检查。可见,如果没有一个明确的定义,谈“强类型”不免是自说自话。那么,可以给“强类型”下一个什么样的定义呢?最原始的定义是这样: 静态类型系统将检查所有的错误。只要通过了静态类型检查,程序将不会有bug.但是,明显这是不现实的转载 2012-09-01 20:50:11 · 1157 阅读 · 0 评论 -
Deep C (and C++) by Olve Maudal and Jon Jagger— 很不错的国外技术文章
编程是困难的,正确的使用C/C++编程尤其困难。确实,不管是C还是C++,很难看到那种良好定义并且编写规范的代码。为什么专业的程序员写出这样的代码?因为绝大部分程序员都没有深刻的理解他们所使用的语言。他们对语言的把握,有时他们知道某些东西未定义或未指定,但经常不知道为何如此。这个幻灯片,我们将研究一些小的C/C++代码片段,使用这些代码片段,我们将讨论这些伟大而充满危险的语言的基本原则,局限性,以转载 2012-08-26 18:22:00 · 1509 阅读 · 0 评论 -
MMU,cache,裸机嵌入式C编程还有带操作系统的编程
通过CMSIS-utrealos项目中的CTBUG调试,使我对裸机C编程加深了认识。那个BUG调试,现象是出现hard fault,但是fault出现地的汇编指令看着貌似没啥问题,解决一处的fault后,其他处又出现fault了。最后我看到原来是fault出现地的指令中源地址错误了,源地址应该在数据段中,却意外地落到了代码段中。这个现象我忙活了半天才找到。然后通过看那奇怪的源地址,对照它四周的原创 2013-11-26 15:23:41 · 1329 阅读 · 0 评论