写给c/c++的新同行门
越界是最难查的,注意memcpy strcpy,strncpy这些函数使用前一定要检查边界
特别是你提供函数给别人用时,你的函数中用到了这些东西,一定要检查别人传给你的指针的
边界
2、变量初始化
这种问题要养成好习惯,否则出来偶然性问题,非常难查
3、多线程指针管理
在多线程环境下使用指针时,最好采用引用计数,让最后一个放充引用计数时,指针删除,避免一个线程在使用指针,另外线程删除掉
4、多线程锁的管理
多线程锁要粒度要适中,尽量减少 一个函数 进入多个锁,避免一个大函数一个大锁影响性能,可学习数据库的表级,行级锁
尽量不要在回调函数中放锁,易 引起死锁
做到线程安全函数单向调用,上层往下层调用,下屋向上层采用事件驱动反馈,避免调用栈
过深,易引起死锁
,
5、多线程对象生存期管理
尽量当多线程共享对象 尽量不要直接删除,建议采用状态机形式来管理,其它线程设置状态
由一个线程统一按状态管理生存期
6、构造函数
函造函数中不要放虚函数,绝对不要在构造函数中开线程,并且线程调用自己的成员
7、内联
虚函数不要内联
8、多线程创建办法
如果用C运行库函数,要注意用C运行库的方法
9,内存管理
建议采用内存池管理
10、线程生存期管理
线程中尽量不要调用同步函数,不要强行杀线程,要让线程不断循环,等待死亡信号自己退出
相关文档:
当要建立线程等时,在Linux下,用文本编辑,在键入“g++ -lpthread”.......“可以把库pthread引入”,编译通过。现在想用eclipse,但是默认情况下,引入不了pthread。会报“undefined reference to phread_create”等错误。
解决方法:可以在project中好到properties
在里面的&ldquo ......
http://www.gamedev.net/reference/programming/features/orgfiles/page2.asp
通过四个pitfall讲解头文件的由来和好处,以及使用头文件定义inline func and template.
Remember that, as far as the compiler is concerned, there is absolutely no difference between a header file and a source file.
The key idea ......
1.gcc包含的c/c++编译器
gcc,cc与c++,g++
gcc和cc是一样的,c++和g++是一样的。一般c程序就用gcc编译,c++程序就用g++编译。
2.gcc的基本用法
gcc test.c:如果没有指定输出的文件,默认将编译出一个名为a.out的程序
gcc test.c -o test:-o参数用来指定生成目标程序的名字,这样将编译出一个名为test的程序。
3.为什 ......
Flex 和C++ 之间传输结构体数据
一直想试验用结构体传数据
但是Flex 和C++ 的类型所占的字节数有时不一样
如int 在C++中站2个字节,而在Flex中占4个字节。
转换比较麻烦。
最后决定用XML进行传输
然后两边都加一个XML 解析和封装类。
C++ 端使用的tinyXML 类
Flex直接使用自己带的 E4X 类
Flex代码如下
&nb ......