【发布时间】:2011-05-04 07:04:35
【问题描述】:
我对我的应用在 Windows 7 的发布模式下崩溃感到非常沮丧。
在主函数中,我删除了所有内容:
int main(int argc, char **argv, char **envp) {
return (0);
}
但我确实在主函数之外定义了很多指令、变量和函数。
它仅在 Windows 7 上的发布模式下崩溃。 Windows 7 上的调试模式没问题; Windows XP 上的调试和发布模式都可以。
由于无法调试,我不知道该怎么做。
错误是:
Unhandled exception at 0x00dc21ca in MyApp.exe: 0xC0000005: Access violation reading location 0x8496a9bb.
装配线:
00DC21CA mov eax,dword ptr [edx+0Ch]
这太疯狂了,请帮忙。
彼得
P.S.:如果我删除了我在 main 之外定义的所有内容,那么没关系。
PS:
char* AllocArgsMemory()
{
return (char*)malloc(2); // works: return NULL
// So it seems the malloc has some problems
}
【问题讨论】:
-
也许您应该一次删除一件事,直到它起作用,这样您就知道该怪什么了。或发布代码。
-
哇。现在有一个很好的。您是否包含除标准库之外的任何库?您可能想检查是否有东西(以某种方式)挂钩到在 main 之前运行的 _main 函数中。
-
另外,检查你的构造函数。全局对象的构造函数是否会导致崩溃(会在 main 之前发生)?
-
放到.NET框架上;)
-
如果您的全局(命名空间级别)对象依赖于其他对象的初始化,则可能会发生这种情况。不同的编译器可以以不同的顺序初始化对象,这就是你在不同平台上看到不同行为的原因。您必须找出导致崩溃的对象。
标签: c++ debugging windows-7 crash release