avatar
e*d
1
void func(void)
{
char *str = (char *) malloc(100);
strcpy(str, “"hello");
free(str);
if(str != NULL)
{
strcpy(str, “"world");
printf("%s\n", str);
}
}
The output is "world" on linux. The freed memory still can be accessed?
avatar
d*d
2
yes.
free means it can be used again. but it won't garantee to be reset to 0.
but it is very very dangerous.

【在 e******d 的大作中提到】
: void func(void)
: {
: char *str = (char *) malloc(100);
: strcpy(str, “"hello");
: free(str);
: if(str != NULL)
: {
: strcpy(str, “"world");
: printf("%s\n", str);
: }

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。