2011-11-30 84 views
3

我在旧的C++项目启动一个控制台应用程序。
随着断点main(int argc, char** argv)开始program.exe -debug
根据调试器argc变为32并且argv中的字符串具有奇怪的随机样值。
继续执行时发生访问冲突,因为argv中的字符串指向无效值。荒谬的价值主(int argc,char ** argv)

什么可能导致这种情况?

+0

您是否在main到'stdout'中打印了'argc'的值以查看它是否也报告了32? – hmjd

回答

5

链接器有错误入口点集。
对于正常的控制台应用程序,应该是mainCRTStartup(调试器显示__tmainCRTStartup)。

有一个无效的入口点导致主要看看什么“hapilized”在堆栈中。
发布此,因为它不是微不足道的找到。

+0

感谢您跟进并发布此知识。 – djdanlib

+0

我怀疑如此。如果链接器没有找到'__tmainCRTStartup',它会发出抱怨,但显然它没有并继续链接该项目。我怀疑'char ** argv'是崩溃的原因(一个不可写的缓冲区)。尝试'char * argv []'。 – milevyo