| 查看: 564 | 回复: 7 | |||
| 当前主题已经存档。 | |||
[交流]
【求助】运行时候提示exe文件就要关闭 调试也有问题怎么办
|
|||
|
调试时候出现 Unhandled exception in Solidsim。exe:0xC0000005:Access Violation 什么意思呢 是我用VC++6.0编的 原来都对都可以编译和运行,但是后来我改了改程序就这样了 我也没改什么啊 就是把数组重新赋值了啊 比如说我把a【i】=b【j+1】;改为a【i】=b【j-6】;改了多处,也不涉及什么啊?请指教啊!!! 我发现虽然说提示关闭 但也有结果 出现了几幅图(我的程序是输出好多幅位图 ) 例如 art[0]=a[j]; art[1]=a[j+1]; art[2]=a[j+101]; art[3]=a[j+100]; art[4]=a[j+99]; art[5]=a[j-1]; art[6]=a[j-101]; 改为 art[0]=a[j]; art[1]=a[j+100]; art[2]=a[j+99]; art[3]=a[j-1]; art[4]=a[j-101]; art[5]=a[j-100]; art[6]=a[j-99];就不能用了 不知道为什么啊 编译没错 运行时候就显示.exe文件有问题要关闭 [ Last edited by tc1788 on 2009-6-18 at 16:52 ] |
» 猜你喜欢
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
假如你的研究生提出不合理要求
已经有6人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
不自信的我
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
26申博(荧光探针方向,有机合成)
已经有4人回复
woshilsh
荣誉版主 (职业作家)
- 应助: 43 (小学生)
- 贵宾: 10.33
- 金币: 21115.1
- 散金: 737
- 红花: 22
- 帖子: 3777
- 在线: 639.7小时
- 虫号: 293038
- 注册: 2006-11-04
- 专业: 计算机应用技术
- 管辖: 仿真模拟

2楼2009-06-18 11:59:49

3楼2009-06-18 13:03:18

4楼2009-06-19 09:00:21
wangen994
荣誉版主 (著名写手)
将军
- 程序强帖: 1
- 应助: 0 (幼儿园)
- 贵宾: 3.348
- 金币: 7797.4
- 散金: 404
- 红花: 5
- 帖子: 2007
- 在线: 242小时
- 虫号: 649482
- 注册: 2008-11-08
- 性别: GG
- 专业: 物理
- 管辖: 程序语言
5楼2009-06-19 09:30:36
★ ★ ★
wangen994(金币+2,VIP+0):楼主的数组范围在合理之中,应该如你所说,可能改动其他地方了,很好,欢迎交流 6-19 12:24
tc1788(金币+1,VIP+0):谢谢您 6-22 10:13
wangen994(金币+2,VIP+0):楼主的数组范围在合理之中,应该如你所说,可能改动其他地方了,很好,欢迎交流 6-19 12:24
tc1788(金币+1,VIP+0):谢谢您 6-22 10:13
|
90%是内存越界。 lz使用数组,可是数组是不检查边界的。修改数组的下标很容易造成数组越界。 举个简单例子: int a[10]; a[9] = 6; 然后改成 a[10] = 6; 因为数组下标按定义只能是0-9,引用a[10]造成了off-by-one的问题。编译的时候不检查边界,编译器不会发牢骚,但是运行的时候,数组越界,出现Access Violation的问题。 但从lz发的代码来看,数组下标的范围还是在合理范围内。lz可以检查一下改动过的其它代码。并且具体的问题要结合art和a的定义来看,光这么扔一堆上来大家一头雾水啊。 最简单的方法,将改动过的地方改回去,然后参照自己的改动,一次改动一个,编译运行。这样在改动到哪一步出问题就很明确了(注意该步骤是bug原因还是诱因要分清楚),可以帮助查错。 |
6楼2009-06-19 10:51:39

7楼2009-06-22 09:41:01
8楼2009-06-22 10:14:21












回复此楼