yiwan 发表于 2016-4-18 17:01:23

c函数陷入死循环和跳出

#include <stdio.h>

void printstar();
void print_message();

int main()
{       

        printstar();
       
       
}       
void printstar()
{
        //printf("hello world\n");//执行过这条语句后,出现死循环! 不执行退出程序!
        print_message();
}

void print_message()
{
        printstar();
   
}

muyu0096 发表于 2016-4-18 18:07:47

这是必然的啊,互相调用而没有终止条件,必然会陷入死循环啊,不出现才怪了,不知道你想表达什么

yiwan 发表于 2016-4-18 21:10:39

如果不执行别的语句,就不会循环

夜雨de街灯 发表于 2016-4-19 09:10:06

本帖最后由 夜雨de街灯 于 2016-4-19 09:23 编辑

访问越界,说白些,就是你定义了函数,在未分配内存情况下对他操作,从而引发问题,直接退出。
你加入hello world后,系统给printstar()函数分配内存(地址)所以可以用,当然print_message()这时也可以用了。
其实你自己可以调试一下{:10_256:}
会发现提示unhandled exception in XXX.exe 0xc0000005:Access Violation

1055560667 发表于 2016-4-19 12:08:37

两个函数互相调用,而且还没有退出的地方。

yiwan 发表于 2016-4-19 15:02:42

如果调用的是空函数,系统会不会分配内存?
页: [1]
查看完整版本: c函数陷入死循环和跳出