У меня есть приложение, которое извлекает данные из базы данных и сохраняет их в памяти для последующего использования. Я тестировал это приложение примерно для 7000 строк данных, но когда я хочу использовать его для 10000 или более, я столкнулся с исключением StackOverflow. Это настолько странно, что я думаю, что я должен получить OutOfMemory, а не Stackoverflow, если мои данные слишком велики.исключение stackoverflow в нерекурсивном контексте
ответ
Вы, конечно, правы. Получение переполнения стека в коде C/C++ довольно легко сделать:
int _tmain(int argc, _TCHAR* argv[])
{
char buffer[4 * 1024 * 1024];
return 0;
}
4, чтобы убедиться, что он дует в 64-битном режиме, а также. Но массивы являются ссылочными типами в управляемом коде. Они распределяются в куче, а не в стеке. В коде C# вам нужно будет присвоить значение типа в качестве локальной переменной, чтобы сожрать пространство стека. И единственный тип типа значения, который подходит для вас в любом месте, - это структура. Это hard, вам нужно объявить структуру, в которой есть четверть миллиона членов, отдайте или возьмите. Единственный возможный способ получить один из них - это структура, которая была автоматически сгенерирована из какого-то инструмента и огромной схемы базы данных.
Этого просто не бывает. Несомненно, проблема находится в вашем провайдере dbase. Неизменно написан на C или C++. И делать что-то неприятное, как использование _alloca(), чтобы взорвать стек. Ключевое слово «stackalloc» в C#. Я не буду упоминать утилиту editbin.exe с аргументом/stack, чтобы увеличить размер стека основного потока, вам не следует обезьяны с этим.
Обратитесь к поставщику услуг dbase.
- 1. Исключение StackOverFlow в getter
- 2. Исключение Stackoverflow в System.Core.dll
- 3. исключение stackoverflow в System.Data.Linq.dll
- 4. Исключение Stackoverflow в JSON.net
- 5. Исключение Stackoverflow с Savefiledialog
- 6. Исключение IIS StackOverflow
- 7. Исключение трассировки StackOverflow
- 8. scala, IntelliJ: исключение stackoverflow
- 9. Исключение stackoverflow Json (quickxml)
- 10. SqlConnection.Open() возвращает исключение StackOverflow
- 11. C#, listbox, исключение stackOverflow
- 12. Stackoverflow Исключение вызвано свойством
- 13. DialogWindow вызывает исключение StackOverflow
- 14. Рекурсивный вызов в нерекурсивном заявлении
- 15. StackOverflow исключение C#
- 16. Почему это исключение StackOverFlow?
- 17. Исключение структуры Stackoverflow
- 18. CyclicReferencesAware атрибут - StackOverflow исключение
- 19. Исключение Stackoverflow в Blackberry CheckBoxField
- 20. исключение stackoverflow в классе формы
- 21. Исключение StackOverflow в рекурсивном методе
- 22. Исключение StackOverflow в GraphicsCreator(). FillEllipse
- 23. Stackoverflow исключение в PersistentFSM актер
- 24. Вавилонский метод рекурсии исключение: stackOverFlow
- 25. Исключение Stackoverflow без заметной причины
- 26. Оценка экспрессии - исключение исключения StackOverflow
- 27. Меньше пакета выбрасывает исключение StackOverflow
- 28. C# WriteProcessMemory странное исключение stackoverflow
- 29. Java 8 потоков - StackOverflow исключение
- 30. Исключение исключения Stackoverflow - множественный расчет
Можете ли вы разместить код? –
Не могли бы вы опубликовать код и трассировку стека во время исключения? –
+1 за вопрос о переполнении стека при переполнении стека (почтовый индекс!) – Hogan