新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论高级C/C++编程、代码重构(Refactoring)、极限编程(XP)、泛型编程等话题
    [返回] 计算机科学论坛计算机技术与应用『 C/C++编程思想 』 → 内存调试技巧:C 语言最大难点揭秘 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 27073 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: 内存调试技巧:C 语言最大难点揭秘 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客楼主
    发贴心情 

    编码风格

      编码风格是最重要的,我还从没有看到过其他任何作者对此加以强调。影响资源(特别是内存)的函数和方法需要显式地解释本身。下面是有关标头、注释或名称的一些示例(请参见清单 6)。

          清单 6. 识别资源的源代码示例

    以下是引用片段:
    /********
    * ...
    *
    * Note that any function invoking protected_file_read()
    * assumes responsibility eventually to fclose() its
    * return value, UNLESS that value is NULL.
    *
    ********/
    FILE *protected_file_read(char *filename)
    {
        FILE *fp;

        fp = fopen(filename, "r");
        if (fp) {
    ...
        } else {
    ...
        }
        return fp;
    }

            /*******
    * ...
    *
    * Note that the return value of get_message points to a
    * fixed memory location.  Do NOT free() it; remember to
    * make a copy if it must be retained ...
    *
    ********/
    char *get_message()
    {
        static char this_buffer[400];

                ...
        (void) sprintf(this_buffer, ...);
        return this_buffer;
            }


            /********
    * ...
    * While this function uses heap memory, and so
    * temporarily might expand the over-all memory
    * footprint, it properly cleans up after itself.
    *
    ********/
            int f6(char *item1)
    {
        my_class c1;
        int result;
                ...
        c1 = new my_class(item1);
        ...
                result = c1.x;
        delete c1;
        return result;
    }
    /********
    * ...
    * Note that f8() is documented to return a value
    * which needs to be returned to heap; as f7 thinly
    * wraps f8, any code which invokes f7() must be
    * careful to free() the return value.
    *
    ********/
    int *f7()
    {
        int *p;

        p = f8(...);
        ...
        return p;
    }


      使这些格式元素成为您日常工作的一部分。可以使用各种方法解决内存问题:

      专用库

      语言

      软件工具

      硬件检查器在这整个领域中,我始终认为最有用并且投资回报率最大的是考虑改进源代码的风格。它不需要昂贵的代价或严格的形式;可以始终取消与内存无关的段的注释,但影响内存的定义当然需要显式注释。添加几个简单的单词可使内存结果更清楚,并且内存编程会得到改进。

      我没有做受控实验来验证此风格的效果。如果您的经历与我一样,您将发现没有说明资源影响的策略简直无法忍受。这样做很简单,但带来的好处太多了。

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/5/7 8:47:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 C/C++编程思想 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/18 14:11:31

    本主题贴数14,分页: [1] [2]

     *树形目录 (最近20个回帖) 顶端 
    主题:  内存调试技巧:C 语言最大难点揭秘(2322字) - 卷积内核,2008年5月7日
        回复:  谢谢·~~加油了~~↖(^ω^)↗(28字) - liuyuanyang,2009年1月16日
        回复:  悬空指针太难理解了!!!!!!!!!!!!(42字) - 秋十三,2008年12月22日
        回复:  好,我收藏了。(14字) - 秋十三,2008年12月22日
        回复:  好贴,内存错误确实是最容易出现的问题,楼主辛苦了(50字) - 一分之千,2008年12月17日
        回复:  悬空指针害死人...(17字) - DMman,2008年12月12日
        回复:  期待...(7字) - llicoina,2008年11月30日
        回复:  加油看啊.!!!!!!(15字) - krens,2008年5月24日
        回复:  读了你写的文章感触很深啊!楼主辛苦了啊(38字) - fzgly,2008年5月19日
        回复:  内存工具  开发真正基于 C 的应用程序的开发团队需要运行时内存工具作为其开发策略的一部分。已..(1365字) - 卷积内核,2008年5月7日
        回复:  检测  检测是编码标准的补充。二者各有裨益,但结合使用效果特别好。机灵的 C 或 C++ 专业..(2970字) - 卷积内核,2008年5月7日
        回复:  编码风格  编码风格是最重要的,我还从没有看到过其他任何作者对此加以强调。影响资源(特别是内存..(2145字) - 卷积内核,2008年5月7日
        回复:  清单 4. 两个错误的内存释放以下是引用片段:/* Allocate once, free ..(1988字) - 卷积内核,2008年5月7日
        回复:  内存泄漏  在分配资源时会发生内存泄漏,但是它从不回收。下面是一个可能出错的模型(请参见清单 ..(1871字) - 卷积内核,2008年5月7日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    164.063ms