c – 为什么goto的宏定义会使程序崩溃?
发布时间:2020-12-16 09:57:33 所属栏目:百科 来源:网络整理
导读:我正在读一个 post,在其中一个答案中有以下代码 #define goto { int x = *(int *)0; } goto 在那里,作者说每次一个人试图使用goto语句,他的程序都会崩溃,我的问题是为什么?根据我的理解,int x = *(int *)0;将内存地址的前4个字节中的任何内容分配给x,但为什
我正在读一个
post,在其中一个答案中有以下代码
#define goto { int x = *(int *)0; } goto 在那里,作者说每次一个人试图使用goto语句,他的程序都会崩溃,我的问题是为什么?根据我的理解,int x = *(int *)0;将内存地址的前4个字节中的任何内容分配给x,但为什么这肯定会使程序崩溃? 解决方法
只是因为您正在取消引用NULL指针.但是那个程序将崩溃的定义没有定义.它可能会崩溃,可能不会崩溃或做一些奇怪的事情.这只是一种未定义的行为,最好避免.
值得注意的是,goto并非毫无用处.每个关键词都有自己的位置,语言作者和标准委员会的成员有理由继续维护它(考虑到语言正在发生一些戏剧性的变化).如果明智地使用,goto在C和C中有一个值得的地方.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |