[疑难] 怎么办?
xgene
2009-04-16
程序编译无任何错误提示,即使是警告信息也没有! 但是执行时就是报错object.Exception: Access Violation - Read at address 0x0
是怎么回事? |
|
Colorful
2009-04-16
一般出现这种错误提示,属于内存越界访问的问题。
这种问题编译器没有办法给出任何提示。 请仔细查看代码,尤其是使用指针的地方和非 GC 内存管理的地方。 |
|
hurd
2009-04-16
对象未创建就调用方法或属性也会提示这个。
|
|
betty_betty2008
2009-04-16
hurd 写道 对象未创建就调用方法或属性也会提示这个。
俺就经常犯这种错误: class Dog { public: void bark() { writefln("Wang....Wangwang"); } } int main(char[][] args) { Dog doggie; .... .... .... doggie.bark; return 0; } 就会发生楼主说的这种情况 |
|
xgene
2009-04-16
谢谢大家! 我会好好看看
|
|
xgene
2009-04-16
很烦人的问题是! 连main函数都没进去,代码多了,找不到位置
|
|
xgene
2009-04-17
这是个很糟糕的问题
如果这个对象A是另一个对象B的方法分返回的,但是有可能返回null, 那你就必须每次在调用A的方法前必须检查A是不是null, 如果有很多的代码,编译期间又不能给出提示,找出这个是null的对象,简直是大海捞针,难道还要反汇编找到问题所在?!!!! |
|
hurd
2009-04-17
运行时返回null,在编译期提示不现实。
如果运行时不允许返回null,加上断言就行了。 |
|
hurd
2009-04-17
另外楼主可以用ddbg。编译时加上-g,可以找到很多错误。
|