<small id='J7rML'></small><noframes id='J7rML'>

  • <i id='J7rML'><tr id='J7rML'><dt id='J7rML'><q id='J7rML'><span id='J7rML'><b id='J7rML'><form id='J7rML'><ins id='J7rML'></ins><ul id='J7rML'></ul><sub id='J7rML'></sub></form><legend id='J7rML'></legend><bdo id='J7rML'><pre id='J7rML'><center id='J7rML'></center></pre></bdo></b><th id='J7rML'></th></span></q></dt></tr></i><div id='J7rML'><tfoot id='J7rML'></tfoot><dl id='J7rML'><fieldset id='J7rML'></fieldset></dl></div>

      1. <legend id='J7rML'><style id='J7rML'><dir id='J7rML'><q id='J7rML'></q></dir></style></legend>
        <tfoot id='J7rML'></tfoot>
          <bdo id='J7rML'></bdo><ul id='J7rML'></ul>

        您如何检测/避免(非托管)代码中的内存泄漏?

        How do you detect/avoid Memory leaks in your (Unmanaged) code?(您如何检测/避免(非托管)代码中的内存泄漏?)

            <small id='QdAhC'></small><noframes id='QdAhC'>

            <i id='QdAhC'><tr id='QdAhC'><dt id='QdAhC'><q id='QdAhC'><span id='QdAhC'><b id='QdAhC'><form id='QdAhC'><ins id='QdAhC'></ins><ul id='QdAhC'></ul><sub id='QdAhC'></sub></form><legend id='QdAhC'></legend><bdo id='QdAhC'><pre id='QdAhC'><center id='QdAhC'></center></pre></bdo></b><th id='QdAhC'></th></span></q></dt></tr></i><div id='QdAhC'><tfoot id='QdAhC'></tfoot><dl id='QdAhC'><fieldset id='QdAhC'></fieldset></dl></div>

              <tbody id='QdAhC'></tbody>
            <legend id='QdAhC'><style id='QdAhC'><dir id='QdAhC'><q id='QdAhC'></q></dir></style></legend>
            • <tfoot id='QdAhC'></tfoot>

                <bdo id='QdAhC'></bdo><ul id='QdAhC'></ul>
                  本文介绍了您如何检测/避免(非托管)代码中的内存泄漏?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  在非托管 C/C++ 代码中,检测内存泄漏的最佳做法是什么?以及要避免的编码指南?(好像就这么简单;)

                  In unmanaged C/C++ code, what are the best practices to detect memory leaks? And coding guidelines to avoid? (As if it's that simple ;)

                  我们过去曾使用过一些愚蠢的方法:每次内存分配调用时计数器递增,释放时递减.程序结束时,计数器值应为零.

                  We have used a bit of a silly way in the past: having a counter increment for every memory allocation call and decrement while freeing. At the end of the program, the counter value should be zero.

                  我知道这不是一个好方法,并且有一些问题.(例如,如果您要释放由平台 API 调用分配的内存,则您的分配计数将与您的释放计数不完全匹配.当然,我们在调用已分配内存的 API 调用时增加了计数器.)

                  I know this is not a great way and there are a few catches. (For instance, if you are freeing memory which was allocated by a platform API call, your allocation count will not exactly match your freeing count. Of course, then we incremented the counter when calling API calls that allocated memory.)

                  我期待着您的经验、建议,也许还可以参考一些简化此过程的工具.

                  I am expecting your experiences, suggestions and maybe some references to tools which simplify this.

                  推荐答案

                  如果您的 C/C++ 代码可移植到 *nix,那么没有什么比 Valgrind.

                  If your C/C++ code is portable to *nix, few things are better than Valgrind.

                  这篇关于您如何检测/避免(非托管)代码中的内存泄漏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Constructor initialization Vs assignment(构造函数初始化 Vs 赋值)
                  Is a `=default` move constructor equivalent to a member-wise move constructor?(`=default` 移动构造函数是否等同于成员移动构造函数?)
                  Has the new C++11 member initialization feature at declaration made initialization lists obsolete?(声明时新的 C++11 成员初始化功能是否使初始化列表过时了?)
                  Order of constructor call in virtual inheritance(虚继承中构造函数调用的顺序)
                  How to use sfinae for selecting constructors?(如何使用 sfinae 选择构造函数?)
                  Initializing a union with a non-trivial constructor(使用非平凡的构造函数初始化联合)
                1. <small id='PpQYo'></small><noframes id='PpQYo'>

                  • <legend id='PpQYo'><style id='PpQYo'><dir id='PpQYo'><q id='PpQYo'></q></dir></style></legend>

                    <i id='PpQYo'><tr id='PpQYo'><dt id='PpQYo'><q id='PpQYo'><span id='PpQYo'><b id='PpQYo'><form id='PpQYo'><ins id='PpQYo'></ins><ul id='PpQYo'></ul><sub id='PpQYo'></sub></form><legend id='PpQYo'></legend><bdo id='PpQYo'><pre id='PpQYo'><center id='PpQYo'></center></pre></bdo></b><th id='PpQYo'></th></span></q></dt></tr></i><div id='PpQYo'><tfoot id='PpQYo'></tfoot><dl id='PpQYo'><fieldset id='PpQYo'></fieldset></dl></div>

                      <tfoot id='PpQYo'></tfoot>
                            <tbody id='PpQYo'></tbody>
                            <bdo id='PpQYo'></bdo><ul id='PpQYo'></ul>