未定义的行为? [英] Undefined behavior?
问题描述
***发布免费通过你的新闻阅读器post.newsfeed.com ***
大家好,
有人带来这是我在Yahoo!上读到的一个小组
char * p,* q;
p = malloc(16);
如果(p){
q = p;
p = NULL;
free(q);
}
这会调用UB吗?
Andrew
----- =通过Newsfeed.Com发布,未经审查的Usenet新闻= -----
http://www.newsfeed.com - 世界排名第一的新闻组服务!
----- == 100,000个团体! - 19台服务器! - 无限下载! = -----
Andrew Clark< an ***** @ syr.edu>写道:
char * p,* q;
p = malloc(16);
if(p){
q = p;
p = NULL;
免费(q);
}
这会调用UB吗?
没有。没有理由这样做。
-
int main(void){char p [] =" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv wxyz.\
\ n",* q =" kl BIcNBFr.NKEzjwCIxNJC" ;; int i = sizeof p / 2; char * strchr(); int putchar(\
); while (* q){i + = strchr(p,* q ++) - p; if(i> =(int)sizeof p)i- = sizeof p-1; putchar(p [i] \
);}返回0;}
Andrew Clark写道:
***通过您的新闻阅读器免费发布post.newsfeed.com ***
大家好,
有人在雅虎读过的小组中提到了这个问题
char * p ,* q;
p = malloc(16);
if(p){
q = p;
p = NULL;
free(q);
这个会调用UB吗?
No.
malloc返回的指针值,
是被释放的指针值。
-
pete
安德鲁·克拉克写道:***在post.newsfeed.com上通过你的新闻阅读器免费发送***
大家好,
有人把这个提到了我在雅虎上读过的一个小组。
char * p,* q;
p = malloc(16);
if(p){
q = p;
p = NULL;
免费(q);
}
这会调用UB吗?
是的,但仅仅是因为你未能:
#include< stdlib.h>
(或者,至少我们看不到它( - :)
除此之外,一切都很好。
HTH,
- g
-
Artie Gold - 德克萨斯州奥斯汀
哦,过去的美好时光普通老垃圾邮件。
*** post for FREE via your newsreader at post.newsfeed.com ***
Hi all,
Someone brought this up in a group I read on Yahoo!
char *p, *q;
p = malloc ( 16 );
if ( p ) {
q = p;
p = NULL;
free ( q );
}
Will this invoke UB?
Andrew
-----= Posted via Newsfeed.Com, Uncensored Usenet News =-----
http://www.newsfeed.com - The #1 Newsgroup Service in the World!
-----== 100,000 Groups! - 19 Servers! - Unlimited Download! =-----
解决方案Andrew Clark <an*****@syr.edu> writes:
char *p, *q;
p = malloc ( 16 );
if ( p ) {
q = p;
p = NULL;
free ( q );
}
Will this invoke UB?
No. There is no reason that it should.
--
int main(void){char p[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv wxyz.\
\n",*q="kl BIcNBFr.NKEzjwCIxNJC";int i=sizeof p/2;char *strchr();int putchar(\
);while(*q){i+=strchr(p,*q++)-p;if(i>=(int)sizeof p)i-=sizeof p-1;putchar(p[i]\
);}return 0;}
Andrew Clark wrote:
*** post for FREE via your newsreader at post.newsfeed.com ***
Hi all,
Someone brought this up in a group I read on Yahoo!
char *p, *q;
p = malloc ( 16 );
if ( p ) {
q = p;
p = NULL;
free ( q );
}
Will this invoke UB?
No.
The pointer value returned by malloc,
is the pointer value which is freed.
--
pete
Andrew Clark wrote:*** post for FREE via your newsreader at post.newsfeed.com ***
Hi all,
Someone brought this up in a group I read on Yahoo!
char *p, *q;
p = malloc ( 16 );
if ( p ) {
q = p;
p = NULL;
free ( q );
}
Will this invoke UB?
Well yes, but only because of your failure to:
#include <stdlib.h>
(or, at least we can''t see it (-: )
Other than that, all is well.
HTH,
--ag
--
Artie Gold -- Austin, Texas
Oh, for the good old days of regular old SPAM.
这篇关于未定义的行为?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!