编码是艺术

游戏编程

博客园 首页 新随笔 联系 订阅 管理
1. 除0错误,毁灭程度不高,易于排除。
    int func(int a)
    {
         // 这一行中只要出现除法,一定要注意检查a的值。
         return 3/a;
    }

2. 结构对齐方式,毁灭程度稍高,但出现错误时易于重现。
   struct stA
  {
      char a;
      int b;
   };

   一般情况在一个程序中没什么问题,但是在不同的编译环境中,默认对齐方式有所改变时就特别头疼,感觉有点莫名其妙数据出了错误,
  所以一般都保持默认对齐方式,特殊的地方要用 
  #pragma pack(push,1) 
   struct stA
  {
      char a;
      int b;
   };
  #pragma pack( pop )

3 类型转换static_cast 和dynamic_cast 的使用,特别是在父转子时,一定要用 dynamic_cast 来检测转换是否可以成功

4.字符串复制和内存复制,memcpy比较简单,注意目标内存快大小不要小于源数据块大小
  strcpy,strncpy等需要注意目标内存快是否够大,sprintf除了注意目标内存块大小还需要注意格式串的匹配性。

5.STL 使用时需要注意他本身是不支持多线程使用的,所以不要认为它是安全的,安全是要自己来保障的。在多动态链接库中使用时也要注意它究竟是在哪个DLL中分配内存,属于哪个进程,直接导出使用也不一定是安全的。

6.文件的读取和写入会失败的,所以要注意检查执行情况,不要认为他是一定可以读写成功的。
posted on 2007-02-10 02:39  宋良  阅读(315)  评论(0编辑  收藏  举报