【发布时间】:2014-07-08 17:09:16
【问题描述】:
我有一个相当大的程序(这就是我不会显示代码的原因),它有一个 quit() 函数,它打印所有错误并打印退出消息,无论程序中发生什么,它都会到达 @ 987654322@ 功能。
问题是,当我运行程序时,有时它会到达所说的quit() 方法并打印退出方法,有时它没有,它会在不打印退出消息的情况下结束。我不明白为什么会发生这种情况,更奇怪的是,当我调试程序时,它总是有效。
我读到调试器具有某些功能可以减少崩溃。
你能告诉我不一致的地方是什么,我应该怎么做才能解决它。
注意:我的程序是用 C 编写的,我正在使用 Visual Studio 2013 (C++) 进行编译。
谢谢。
已解决:问题是我访问了未分配的内存(我是动态分配的,但还不够)。我的解决方案是 realloc()。
【问题讨论】:
-
不阅读代码是不可能的......或者至少是其中的一部分
-
备注:
if (extension == ".huf")不行,需要使用strcmp()。 -
另一个说明是那里有解析命令行的库。任何人第一次尝试这种自制代码都会出错。
-
如果您分配例如
cryptoKey = optionParameters[i];您更改了本地参数cryptoKey,而不是实际参数,即main 中的cryptoKey。您可以为 main 的 cryptoKey 分配空间,例如char cryptoKey[100];,并将 strcpy 分配给该地址而不是覆盖它;或者您可以将指针传递给指针并像现在一样写入 char* 本身:initializeOptions( ..., char **cryptoKeyParam, ...) { *cryptoKeyParam = optionParameters[i]; ...},使用initializeOptions(..., &cryptoKey, ...);从 main 调用它。 -
您可以通过在调用
quit函数时故意崩溃来区分两者。如果程序在quit函数中崩溃,那么你就知道它被调用了。