51Testing软件测试论坛

标题: 为什么程序没有崩溃? [打印本页]

作者: zhaochuan    时间: 2006-5-25 08:48
标题: 为什么程序没有崩溃?
我编了一个C函数
#include <stdio.h>
main()
{
   int foo;
   int *p=NULL;
   foo=*p;
}

按照这个网页说的http://blogs.msdn.com/chappell/archive/2005/01/12/351856.aspx,这个函数属于内存非法访问,系统会崩掉。但是我在Win-TC上编译运行,就一个命令行窗口一闪而过,什么提示都没有,系统还是好好的。为什么?
我的系统是Windows XP Home-CN, 打上了最新的补丁。

[ 本帖最后由 zhaochuan 于 2006-5-25 09:15 编辑 ]
作者: zhaochuan    时间: 2006-5-25 09:16
还有这个
   int foo;

   int * ip = (int*)16777216; //Address 0x01000000,  in another process' address space  

   foo = *ip; //Crash!
程序也没有崩溃。
作者: ilovejolly    时间: 2006-5-25 09:31
你的程序好好的?什么叫好好的
作者: zhaochuan    时间: 2006-5-25 11:47
就是运行程序时,只有一个命令行窗口一闪而过,其它什么反应都没有。
作者: ilovejolly    时间: 2006-5-25 14:02
你觉得应该怎么样
作者: 肚子    时间: 2006-5-25 14:23
赵同学的意思应该是

按常理来说
这个程序应该会崩溃
但是却没有崩溃

这是什么原因?
作者: empire    时间: 2006-5-25 15:18
你把程序改成这样呢?
#include <stdio.h>
main()
{
   int foo=2;
   int *p=NULL;
   *p=foo;
}
作者: zhaochuan    时间: 2006-5-25 16:18
原帖由 empire 于 2006-5-25 15:18 发表
你把程序改成这样呢?
#include <stdio.h>
main()
{
   int foo=2;
   int *p=NULL;
   *p=foo;
}

程序还是没有崩溃。
作者: zhaochuan    时间: 2006-5-25 16:23
原帖由 ilovejolly 于 2006-5-25 14:02 发表
你觉得应该怎么样

Our operating system shuts down this badly behaving application with an error like the following:


Unhandled exception at 0x004173c8 in cpractice.exe: 0xC0000005: Access violation reading location 0x00000000.

我想要这个结果。

我们测的项目需要很多系统或程序crash掉的实例,真难找呀。
作者: 天网    时间: 2006-5-25 23:00
我机器上运行这段代码会报异常.你可以设断点单步跟一下,应该会报异常的.
作者: zhaochuan    时间: 2006-5-26 11:14
我在VC上试了一下,总算成功了。
谢谢老师,肚子还有诸位同学。
作者: morn    时间: 2006-5-28 04:30
在TC上不成功的原因:
Win-TC实际上就是给TC加了个windows界面,它本质还是一个16位的编译器,生成的程序都是16位的。对于TC这个编译器来说,它对于读0地址(楼主例)和写0地址(empire例)的异常有自己的处理,区别于win 32位系统下的异常处理。TC对读0地址的处理是不作处理,程序继续往下执行;对写0地址是不进行该写操作,在所有语句执行完后返回“Null pointer assignment”。win 32位系统编译器下则是报楼主希望报的错。操作系统和编译环境本身不会崩溃,因为已经做了相应的异常处理。

楼主希望有msdn文档里描述的提示是在win32平台上才会出现的:)
作者: morn    时间: 2006-5-28 04:31
64位还没试过,不确定呵呵
作者: yang119345    时间: 2006-5-28 14:23
32位~vc6
作者: morn    时间: 2006-5-28 22:46
楼上这个是直接运行编译好的可执行程序,在"Click here"里可看到对应的错误代码和说明。
作者: zhaochuan    时间: 2006-5-30 16:51
楼上解释的很详细,谢了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2