”悬空指针“的怪异现象!!

看起来有问题,但是运行起来却没有问题,

/*我的代码*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    char *p = NULL;
    p = ( char * )malloc( 4 * sizeof( char ) );
    free( p ); /****这里已经释放了p指向的内存块****/
    strcpy( p, "abc" );
    printf( "%s\n", p );
    retrun 0;
} 
/*free( p )释放了p指向的内存块,但是并没有改变p本身。于是产生了悬空指针,此时
p不再指向有效的内存块,strcpy函数修改了p指向的内存块,却没有造成程序崩溃,为啥?       ****不科学啊?*/
本人再Mac OS X 10.9上编译,运行却没有出错。求解释》》》!!!

原文阅读

"文章为作者独立观点, 不代表老订阅立场"

本站作者

每日荐书

在不完美的世界力求正常——读《公司的坏话》

书名:《公司的坏话》

作者:李天田(脱不花妹妹)

出版社:北京大学出版社

赞助商

广告