在调试程序的时候出现的一个错误,有谁可以给我详细的讲解一下吗?
下面是源代码,编译的时候没有错误,可以执行。这个程序没有任何目的,只是出于对函数的相互调用的好奇。不过在调试出现错误的提示, 提示: 0xC00000FD: Stack Overflow. 出现栈溢出错误。
程序在执行一定的次数后自己结束。下面是代码。用的vc++6.0.
#include<stdio.h>
void fun1();
void fun2();
void fun1()
{
printf("-------第一轮测试------\n");
fun2();
}
void fun2()
{
printf("-------第二轮测试------\n");
fun1();
}
main()
{
printf("--------测试开始--------\n");
_sleep(1000);
fun1();
}
百度搜索 stack overflow ,说是堆栈上只能分配1m的地址空间,把project设置里的堆栈加大就可以了,默认是1M,可以加大到10M。解决方法: 在project->settings->link->Category=output->stack allocations 设一个足够大的值就行。
堆栈的大小只有1M,如果在函数中定义了一个占用内存比较大的变量,那么也会导致堆栈溢出。这种情况只需在定义的时候定义为静态变量就行了,因为静态变量是不占用堆栈内存的。
不是很懂,至于变量,也没有定义。谁可以详细的介绍一下吗?谢谢