如何克服Visual Studio的堆栈大小问题(使用大数组运行C代码)

用户名

我第一次使用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(在编译过程中):

  1. 选择Project->Setting
  2. 选择Link页面。
  3. 选择Category to Output
  4. 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章