美文网首页
栈溢出预防、检查

栈溢出预防、检查

作者: 肥树仙僧 | 来源:发表于2018-11-02 18:37 被阅读0次

    最好的预防方法就是使用动态内存

    每个进程中的线程,其栈的空间是固定。但是这个固定是随系统改变的。假如只给你2M空间,你非得申请3M,那么就出现栈溢出。
    在XP系统中,如果出现栈溢出,很有可能出现系统奔溃。(亲身经历了)。
    常见的,

    int g = 0; // 位于全局变量区
    void fun()
    {
      static int s = 0; // 位于全局变量区
      int a = 4; // 位于栈
      char* p = new char[10]; // 位于堆
    }
    

    所以,为了避免出现栈溢出,最好的方法是使用动态内存

    那么如何检查呢。其实就是检查代码中是否有申请超大的栈内存。在VS中,可以通过打开代码分析功能来检查哪里有大量栈内存被申请。

    工程---属性---C++--高级--代码分析
    注:并不是所有的VS版本都有这个功能,VS2008团队版有。VS2017的社区版没有。

    相关文章

      网友评论

          本文标题:栈溢出预防、检查

          本文链接:https://www.haomeiwen.com/subject/fawcxqtx.html