CPP_TEST.exe中0x7604c128处未处理的异常:0xC00000FD:堆栈溢出



为什么stackover flow发生在我在代码中使用fflushfree的地方。请帮帮我。

using namespace std;
    struct abc{
        int x;int y;
        }abc;
int _tmain(int argc, _TCHAR* argv[])
{
    struct abc *xyz = (struct abc *) malloc(sizeof(struct abc));
    xyz->x = 5;
    printf("%dn", xyz->x);
    //system("pause");
        free(xyz);
     // xyz = NULL;
        fflush(stdout);
        _tmain(NULL, NULL);
    return 0;
}

编辑代码:

xyz:
    struct abc *xyz = (struct abc *) malloc(sizeof(struct abc));
    xyz->x = 5;
    printf("%dn", xyz->x);
    //system("pause");
    free(xyz);
    xyz = NULL;
    fflush(stdout);
    goto xyz;

您从_tmain()函数中非一致地调用_tmain()函数,导致无限递归。每个调用都需要在堆栈上分配空间(永远不会释放),从而导致StackOverflow异常。看看维基百科(Wikipedia)就知道这个问题太全面了。

除此之外,从自己的代码中调用main()函数通常不是一个好主意,因为这是标准所禁止的。

§3.6.1.3:不得在程序中使用功能主体。

你为什么要这么做?

系统需要堆栈上变量的内存,您分配了堆栈变量,这些变量每次递归调用都会占用内存。此外,它还需要内存来存储每个递归调用的返回指针。

相关内容

  • 没有找到相关文章

最新更新