我第一次使用Visual Studio 13编译C代码。代码在尺寸为64 * 64的2d射线下运行正常(程序中有几个数组),但是如果我将数组大小增加到128 * 128,它将无法运行(但可以正确编译)。而是显示一条消息“ .exe已停止工作”。如果我从Linux运行代码,则我的机器具有4GB内存,并且同一程序以128 * 128阵列运行。
让我提供更多详细信息:我已经在同一台计算机上使用Intel C Compiler(非商业版本)在Linux上运行了相同的代码。但是由于某些问题,我现在只能在Windows环境下工作。我搜索并安装了两个c编译器(1)Visual Studio 13和(2)BorlandC。两者都可以在小型阵列上很好地工作。但是,当我增加数组大小时,Visual Studio会显示消息“ .exe已停止工作”。我使用“ Developers Command Prompt VS 13”中的“ cl”编译程序。
我觉得问题出在堆栈大小上。
在链接的详细说明(如下所示)中,我看到了在Linux环境中使用的命令“ ulimit”来增加堆栈大小。我记得几年前使用过它。
我觉得我们已经接近解决方案,但是由于无法执行dumpbin /headers executable_file
或,我的Windows(和VS 2013)问题仍然存在editbin /STACK:size
。实际上,我觉得我不知道如何执行它们。我试图从“ Developer Command Prompt VS 13”以及使用“运行”(Windows开始,底部->“搜索”(运行)->“运行”(启动))执行它们。如有可能,请提供更多详细信息。
我搜索并找到了该网站,并认为可以在此处找到解决方案。
请帮忙。我想从Windows使用Visual Studio 13运行。
似乎背后的原因是堆栈溢出。可以通过增加堆栈大小来解决此问题。
在Visual Studio中,您可以使用来实现/STACK:reserve[,commit]
。阅读MSDN文章。
有关更多详细说明:
在Windows平台上,堆栈大小信息包含在可执行文件中。可以在Visual Studio C ++中进行编译时设置。
或者,Microsoft提供了editbin.exe
可以直接更改可执行文件的程序。以下是更多详细信息:
Windows(在编译过程中):
Project->Setting
。Link
页面。Category to Output
。Reserve:
在下的字段中输入您首选的堆栈大小Stack allocations
。例如,32768
十进制或0x20000
十六进制。Windows(修改可执行文件):
Microsoft Visual Studiodumpbin.exe
和中包含了两个程序editbin.exe
。运行dumpbin /headers executable_file
,您可以在中查看size of stack reserve
信息optional header values
。运行editbin /STACK:size
以更改默认堆栈大小。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句