随笔分类 -  C_language

上一页 1 2 3 4 下一页

关于write solid code中的memset
摘要:文中说明memset可以通过操作整形以加速程序执行速度,这一点值得肯定,问题在于unicore或arm中协处理器有地址访问对齐检查,如果我们如此操作,编译器最终使用str指令来完成,那么当地址未对齐时将会出现错误。上次和同学看了下rtems的编译器对于strncpy的实现,由于rtems的编译器本身做了大量优化,当stncpy的拷贝的长度较小时使用了编译器内嵌的实现版本(str完成),而未使用libc库的实现版本(strb),由于使能了地址对齐访问检查,所以程序运行后总是会运行错误。 阅读全文

posted @ 2013-07-10 13:36 阿加 阅读(219) 评论(0) 推荐(0)

如果返回结构体类型变量(named return value optimisation,NRVO)
摘要:貌似这是一个非常愚蠢的问题,因为对于具有良好素质的程序员而言,在C中函数返回类型为结构体类型是不是有点不合格,干嘛不用指针做传入传出呢?测试环境:Linux IOS 3.2.0-45-generic-pae #70-Ubuntu SMP Wed May 29 20:31:05 UTC 2013 i686 i686 i386 GNU/Linux gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the sourc 阅读全文

posted @ 2013-07-08 16:29 阿加 阅读(1704) 评论(0) 推荐(0)

简单工厂模式(simple factory pattern)
摘要:与一个对象相关的职责通常有3类:1、对象本身所具有的职责(对象自身所具有的数据和行为)2、创建对象的职责3、使用对象的职责;简单工厂模式的缺点:1、简单工厂集中了所有产品的创建逻辑,职责过重2、系统扩展困难,一旦添加新产品不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护 严重违反“开闭原则”(Open-closed princple)简单工厂模式的优点:1、对象创建和使用分离,客户端免除直接创建产品对象的职责,而仅“消费”产品;2、客户端只需传入相应的参数即可获得相应的产品;3、将产品的创建限定在一个静态方法中,避免代码散落趋势蔓延; 阅读全文

posted @ 2013-06-26 19:36 阿加

C++primer中 CacheObj实现(非常有意思)
摘要:1 //CacheObj.h 2 3 #ifndef __CacheObj__ 4 #define __CacheObj__ 5 6 #include <iostream> 7 #include <stdexcept> 8 #include <malloc.h> 9 10 11 /* 12 * memory allocation class: Pre-allocates obj... 阅读全文

posted @ 2013-06-19 22:45 阿加 阅读(730) 评论(0) 推荐(0)

c++primer记录(二) 模板
摘要:因为看得源码里有大量的类模板,所以补充下C++中模板的知识模板:函数模板 类模板 1、p-536 函数模板的类型参数可由编译器进行推断,也可以由用户显式的指定,类模板的类型参数必须显式的给出; p-551 非类型模板实参必须时编译时常量表达式,例: template <int hi, int wid> class Screen{ public: Screen(in... 阅读全文

posted @ 2013-06-18 20:56 阿加 阅读(325) 评论(0) 推荐(0)

why pure virtual function has definition 为什么可以在基类中实现纯虚函数
摘要:看了会音频,无意搜到一个frameworks/base/include/utils/Flattenable.h : virtual ~Flattenable() = 0;所以查了下“纯虚函数定义实现”,下文讲的非常好:引述自:http://forums.codeguru.com/showthread.php?356281-C-why-pure-virtual-function-has-definition-Please-look-into-sample-code-hereQuestion C++: why pure virtual function has definition?Please 阅读全文

posted @ 2013-06-17 19:30 阿加 阅读(824) 评论(0) 推荐(1)

C++类中静态成员函数
摘要:引述自《深入探索C++对象模型》2001:5:1版次,p-150static member functions的主要特性就是它没有this指针,所以:1、它不能直接存取其所在class中的nonstatic members;2、它不能够被声明为const、volatile或virtual;3、它不需要经由class object才被调用——虽然大部分时候它是这样被调用的.所有的nonstatic member functions都需要对象的地址(以参数this指出);static member functions(没有this指针)的类型是”函数指针“,而不是”指向member functio 阅读全文

posted @ 2013-06-16 16:05 阿加 阅读(205) 评论(0) 推荐(0)

命令模式——示例——实现
摘要://依 CSDN刘伟技术博客,C++命令模式示例如下: 1 // Client.cpp 2 3 #include 4 #include 5 6 #include 7 #include 8 #include 9 10 int main(void)11 {12 //面板13 FBSe... 阅读全文

posted @ 2013-06-11 19:23 阿加 阅读(207) 评论(0) 推荐(0)

命令模式——示例——数据结构
摘要:依 CSDN刘伟技术博客,C++命令模式示例如下: 1 // include/Command.h 2 3 #ifndef __COMMAND__ 4 #define __COMMAND__ 5 6 #include <WindowHandler.h> 7 #include <HelpHandler.h> 8 9 //抽象命令类10 class Command 11 {12 public: 1... 阅读全文

posted @ 2013-06-11 19:12 阿加 阅读(281) 评论(0) 推荐(0)

观察者模式
摘要:引述自CSDN 刘伟技术博客http://blog.csdn.net/LoveLion 1 #include 2 #include 3 using namespace std; 4 5 class AllyControlCenter; 6 //抽象观察类 7 class Observ... 阅读全文

posted @ 2013-06-05 21:45 阿加

constructor the shared structure in-place
摘要:new(mCblk) audio_track_cblk_t(); placement new 1 #include <iostream> 2 #include <stdio.h> 3 #include <malloc.h> 4 5 class Student 6 { 7 private: 8 int age; 9 int grade;10 public:11 Student(void)12 {13 age = 5;14 grade = 10;15 }... 阅读全文

posted @ 2013-05-30 15:23 阿加 阅读(183) 评论(0) 推荐(0)

C 实现 C++继承多态 实例
摘要:引述自:http://www.eventhelix.com/realtimemantra/basics/ComparingCPPAndCPerformance2.htm#.UaG1Kdd3-fg 1 // A typical example of inheritance and virtual function use. 2 // We would be mapping this code to equivalent C. 3 4 // Prototype graphics library function to draw a circle 5 vo... 阅读全文

posted @ 2013-05-26 15:11 阿加 阅读(1047) 评论(0) 推荐(1)

printf
摘要:1 转换说明符及作为结果的打印输出 2 ------------------+------------------------------------------------ 3 转换说明 + 输出 4 ------------------+------------------------------------------------ 5 %c + ... 阅读全文

posted @ 2013-05-24 14:01 阿加 阅读(239) 评论(0) 推荐(0)

free后使用
摘要:free(paddress),paddress中的内容将会被库改变,所以一定不要在free后再操作此块内存地址 阅读全文

posted @ 2013-05-21 11:12 阿加 阅读(113) 评论(0) 推荐(0)

c++ primer记录(一)
摘要:1 C++中理解“初始化不是赋值”是必要的。初始化指创建变量并给它赋初始值,而赋值则是擦除对象的当前值并用新值替代。 2 3 C++支持两种初始化变量的形式:赋值初始化(int val = 1024),直接初始化(int val(1024)) 4 5 在文件作用域内,非const变量默认为extern,要使const变量能过在其它文件中访问,必须显示地指定它为extern 6 当我们在头文件中定义了const变量后,每个包含该头文件的源文件都有了自己的const变量,其名称和值都是相同的. 7 8 非const引用只能绑定到与该引用同类型的变量。con... 阅读全文

posted @ 2013-05-13 10:57 阿加 阅读(259) 评论(0) 推荐(0)

模板的一般友员函数
摘要:1 #include <iostream> 2 #include <string.h> 3 4 using namespace std; 5 6 template < class T > 7 class myvector 8 { 9 private://在内部... 阅读全文

posted @ 2013-05-06 19:30 阿加 阅读(210) 评论(0) 推荐(0)

数组越界
摘要:C标准允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针进行比较,但不允许与指向数组第1个元素之前的那个内存位置的指针进行比较。两个指针相减的结果的类型时ptrdiff_t,它是一种有符号整数类型。减法运算的值是两个指针在内存中的距离(以数组元素的长度为单位,而不是以字节为单位),结果可以为负值。 阅读全文

posted @ 2013-04-06 20:31 阿加 阅读(172) 评论(0) 推荐(0)

linux应用程序记录
摘要:进程:一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。进程有自己的栈空间,用于保存函数中的局部变量和控制函数的调用与返回。进程还有自己的环境空间,包含专门位这个进程建立的环境变量。进程必须维护自己的程序计数器,这个计数器用来记录它执行到的位置,即在执行线程中的位置。在使用线程时,进程可以有不止一个执行线程。 Linux进程表就像一个数据结构,它把当前加载在内存中的所有进程的有关信息保存在一个表中,其中包括进程的PID、进程的状态、命令字符串和其它一些ps命令输出的各类信息。 子进程终止时,它与父进程之间的关联还会保持,直到父进程也正常的终止或父进程调用wait才告结束。因此, 阅读全文

posted @ 2013-03-29 13:32 阿加 阅读(219) 评论(0) 推荐(0)

unicore32-linux-gcc 预定义宏
摘要:unicore32-linux-gcc -dM -E - </dev/null 阅读全文

posted @ 2013-03-19 12:36 阿加 阅读(161) 评论(0) 推荐(0)

类继承
摘要:1 #include 2 3 class CSofa 4 { 5 public: 6 CSofa() 7 { 8 m_nColor = 2; 9 } 10 11 virtual ~CSofa()12 { 13 ... 阅读全文

posted @ 2013-03-03 18:13 阿加 阅读(405) 评论(0) 推荐(0)

上一页 1 2 3 4 下一页

导航