无限循环c语言百度百科,C语言:写个setjmp相关的小程序,百度百科的看不懂

本文详细解析了《APUE》7.10节关于setjmp和longjmp在C程序中的作用,重点讲解了它们如何影响全局变量、局部变量和注册变量的值,以及在异常退出时的内存行为。通过实例演示,深入剖析了这两者在内存管理中的微妙之处。
摘要由CSDN通过智能技术生成

#这是APUE 7.10节的例子,很好懂

#详细的参考原书吧,有对结果的详细分析,讲的肯定比我说的透彻

#include "apue.h"

#include static voidf1(int, int, int, int);

static voidf2(void);

static jmp_bufjmpbuffer;

static intglobval;

int

main(void)

{

intautoval;

register intregival;

volatile intvolaval;

static intstatval;

globval = 1; autoval = 2; regival = 3; volaval = 4; statval = 5;

if (setjmp(jmpbuffer) != 0) {

printf("after longjmp:\n");

printf("globval = %d, autoval = %d, regival = %d,"

" volaval = %d, statval = %d\n",

globval, autoval, regival, volaval, statval);

exit(0);

}

/*

* Change variables after setjmp, but before longjmp.

*/

globval = 95; autoval = 96; regival = 97; volaval = 98;

statval = 99;

f1(autoval, regival, volaval, statval);/* never returns */

exit(0);

}

static void

f1(int i, int j, int k, int l)

{

printf("in f1():\n");

printf("globval = %d, autoval = %d, regival = %d,"

" volaval = %d, statval = %d\n", globval, i, j, k, l);

f2();

}

static void

f2(void)

{

longjmp(jmpbuffer, 1);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值