Windows 将值设置为main(int argc,char**argv) 我在旧C++项目上启动控制台应用程序。 在main(int argc,char**argv)中使用断点启动program.exe-debug 根据调试器,argc变为32,argv中的字符串具有奇怪的随机值。 执行继续时发生访问冲突,因为argv中的字符串指向无效值
什么原因会导致这种情况?链接器设置了错误的入口点。Windows 将值设置为main(int argc,char**argv) 我在旧C++项目上启动控制台应用程序。 在main(int argc,char**argv)中使用断点启动program.exe-debug 根据调试器,argc变为32,argv中的字符串具有奇怪的随机值。 执行继续时发生访问冲突,因为argv中的字符串指向无效值,windows,msvcrt,Windows,Msvcrt,什么原因会导致这种情况?链接器设置了错误的入口点。 对于普通控制台应用程序,这应该是mainCRTStartup(调试器显示\uu\tmainCRTStartup) 具有无效的入口点导致main查看堆栈中发生了什么。 发布这篇文章,因为它不是一件小事。您是否将main中的argc值打印到stdout以查看它是否也报告了32?感谢您跟踪并发布这一神秘的知识。我对此表示怀疑。如果链接器没有找到\uu tmainCRTStartup,它会抱怨,但显然它没有找到,并继续链接项目。我怀疑char**arg
对于普通控制台应用程序,这应该是
mainCRTStartup
(调试器显示\uu\tmainCRTStartup
)
具有无效的入口点导致main查看堆栈中发生了什么。发布这篇文章,因为它不是一件小事。您是否将main中的
argc
值打印到stdout
以查看它是否也报告了32?感谢您跟踪并发布这一神秘的知识。我对此表示怀疑。如果链接器没有找到\uu tmainCRTStartup
,它会抱怨,但显然它没有找到,并继续链接项目。我怀疑char**argv
是崩溃的原因(不可写缓冲区)。请尝试char*argv[]
。