c语言一个死循环中为啥执行完一个功能函数就退出了?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言一个死循环中为啥执行完一个功能函数就退出了?相关的知识,希望对你有一定的参考价值。

一个死循环在执行中停止:
1、你在死循环中包含了break语句或return,比如if满足某个条件就执行break或者return。
2、你在循环中或调用的函数中,执行了exit函数,直接结束了整个程序。
3、你的代码有错,比如使用野指针,越界访问数组等不可控行为。
4、内存不足,程序终止,比如循环malloc申请内存,但没有释放,又或者调用递归函数造成内存溢出。
参考技术A 第三个for写得有误
for(i=0; i < width-2; ++j) printf(" "); 此行有误
应当修改为: for(i=0; i < width-2; ++i) printf(" "); //注意应当是 ++i
你要学会debug, 按f5键就可以调试,按F9打断点,就可以知道停在哪里了。

arm程序退出死循环

ldr lr,=halt_loop
ldr pc,=main
halt_loop:
b halt_loop

配置了链接寄存器指向的是halt_loop,在pc跳到主函数运行结束之后,pc的值会指向链接寄存器lr,然后就跳到halt_loop这个死循环上了,这是程序结束至死循环的意思。

1、如果main是死循环,那么本条语句是不会执行,cpu在一直取指运行。
2、如果main不是死循环,那么main返回后,执行汇编里面的这条循环。
如果不这么做,cpu会继续往下执行,然而后边并没有代码了,就会会把垃圾数据当做指令,触发未定义指令异常,导致系统崩溃可能就重启了

以上是关于c语言一个死循环中为啥执行完一个功能函数就退出了?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中啥叫死循环?怎么避免?

C语言中死循环怎么解决?

c语言for循环无法正常执行?

Go语言在循环中panic后还能继续执行for循环?

c语言 scanf("%d",&a);输入字符为啥会进入死循环?

c语言 运行完就直接退出了,看不到结果