高质量C++/C 编程指南中的疑问,忘高人指点,提问如下

[复制链接]
查看11 | 回复3 | 2011-3-4 16:25:35 | 显示全部楼层 |阅读模式
这里是否会有错误报告,和p指向的地址是否能访问有关。一般情况下,如果p指向的空间,被释放后,直接再使用,且没有溢出,很可能不会出错。你所访问的数据,就是你原本残留的数据。但是,如果p指向的空间,被重新分配给别的程序了,就很可能出错。尤其是当该空间你不再具备读的权限时,系统则肯定会报错。你应该有这样一种经验:定义一个字符数组:char a[10] = {'1','2','3','4','5','6','7','8','9','A'};你访问a[0]到a[9]时,不论是实际上还是逻辑上,都是正常的。但是你访问a[10],a[11],a[12]...时,也是可以访问的,而且有数值输出,至于到什么地方会报错,取决于哪个地址空间你...
回复

使用道具 举报

千问 | 2011-3-4 16:25:35 | 显示全部楼层
编译器只是检查语法错误..运行时的错误是不能够预测的。你把P指针指向的内存释放之后,记得 P = NULL;否则你再访问P指针指向的内存时,会报错....
回复

使用道具 举报

千问 | 2011-3-4 16:25:35 | 显示全部楼层
我在我这试了一下,我的输出结果是乱码。我是这样认为的。用free后,P指向的那块内存已经被释放掉了,但是p仍然指向这块内存,在程序运行期间,那块内存可能已经被电脑其它程序占用了,也可能没有被占用,因此,输出结果是未知的,可能输出world也可能输出乱码。。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行