.NET 2到.NET 4迁移导致堆栈溢出崩溃

时间:2015-06-04 19:41:57

标签: c++ .net-4.0 .net-2.0 stack-overflow

我有一个带有C ++和C#代码的遗留软件,它可以在Windows XP SP3和.NET 2.0(VS2005)中运行。该软件通过大量内存密集处理进行扫描和图像处理。 PC有2GB的RAM。对于软件进程,堆栈大小保留为15MB。

此软件已迁移到.NET4(VS2010)。在迁移期间,代码逻辑不会改变。该软件适用于个人扫描和处理。但是,对于连续的作业运行,软件会在随机位置崩溃。对于所有崩溃,事件查看器显示'软件由于堆栈溢出而终止'。在调试崩溃转储时,它指向ntdll.dll(内核dll)。

要解决问题,请尝试以下解决方法。他们都没有工作。

  1. 堆栈大小增加到20MB。软件崩溃了。
  2. 进程在开始时由VirtualAlloc分配820 MB。这增加到1024 MB。它推迟了一天的崩溃。但最终它崩溃了。
  3. alloca用于为局部变量分配内存。这些被_malloca取代。
  4. 如果.NET 4迁移需要大量增加RAM来运行软件而不失败,请告诉我。欢迎输入.net 2到.net 4迁移的内存需求变化。

0 个答案:

没有答案