我有一个应用程序从数据库中提取数据并将其存储在内存中供以后使用。 我测试过这个应用程序大约7000个数据行,但是当我想要使用它10000或更多时,我遇到了StackOverflow异常。这太奇怪了,因为我认为如果我的数据太大,我应该得到OutOfMemory,而不是Stackoverflow。非递归上下文中的stackoverflow异常
1
A
回答
2
你当然是对的。获得一个堆栈溢出在C/C++代码是很容易做到:
int _tmain(int argc, _TCHAR* argv[])
{
char buffer[4 * 1024 * 1024];
return 0;
}
4,以确保它在64位模式下吹也。但是数组是托管代码中的引用类型。他们被分配在堆上,而不是堆栈中。在C#代码中,您将不得不分配值类型作为本地变量来吞噬堆栈空间。而唯一有资格让你随身携带的值类型类型就是一个结构体。这就是硬,你必须声明一个有25万个成员的结构。获得其中一种的唯一可能方式是从某种工具和巨大的dbase方案自动生成的结构。
这只是不会发生。问题确实存在于您的dbase提供商中。总是用C或C++编写。做一些令人讨厌的事情,比如使用_alloca()来打击堆栈。 C#中的“stackalloc”关键字。我会避免提到带有/ stack参数的editbin.exe实用程序来增加主线程堆栈的大小,你不应该用这个。
与您的数据库提供商交谈。
相关问题
- 1. 递归调用中的StackOverFlow异常
- 2. 通过非递归函数发生的Stackoverflow异常
- 3. 在递归中的stackoverflow
- 4. StackOverflow的异常
- 5. 我怎么能抓住递归代码上的stackoverflow异常的根
- 6. StackOverflow异常
- 7. Java中的StackOverflow异常
- 8. Python中的递归和异常,如何在不丢失递归堆栈的情况下捕获异常
- 9. 有限集上的Stackoverflow异常
- 10. Windows Server 2016上的Stackoverflow异常(0xc00000fd)
- 11. 伪递归调用= stackoverflow
- 12. Java Stackoverflow错误递归
- 13. Telerik RadGridView.CommitEdit()StackOverflow异常
- 14. Primefaces Tree StackOverFlow异常
- 15. Java:有限递归中的Stackoverflow
- 16. 递归加载EF 4.1中的stackoverflow POCO
- 17. 在递归中避免Stackoverflow的技巧
- 18. 此递归中的Stackoverflow错误
- 19. 递归 - 线程“main”中的异常java.lang.StackOverflowError
- 20. StackOverflow的异常get和set
- 21. Linq to SQL的Stackoverflow异常
- 22. 递归差异非常缓慢 - 检查目录的内容
- 23. 在递归函数中防止StackOverFlow
- 24. 在窗体类中的stackoverflow异常
- 25. DataView行筛选器中的stackoverflow异常
- 26. 什么是vb.net中的StackOverFlow异常?
- 27. 具有递归功能的Stackoverflow
- 28. stackoverflow异常未处理
- 29. StackOverflow错误,View.inflate异常
- 30. 未处理的异常排序递归
你能发表一些代码吗? – 2010-07-26 23:43:48
你能发布一些代码和异常时的堆栈跟踪吗? – 2010-07-26 23:44:04
用于询问堆栈溢出时堆栈溢出的+1(邮政编码!) – Hogan 2010-07-26 23:45:03