Вы правы конечно.Получить переполнение стека в коде C / C ++ довольно легко:
int _tmain(int argc, _TCHAR* argv[])
{
char buffer[4 * 1024 * 1024];
return 0;
}
4, чтобы убедиться, что он работает и в 64-битном режиме.Но массивы являются ссылочными типами в управляемом коде.Они распределяются в куче, а не в стеке.В коде C # вы должны будете выделить тип значения в качестве локальной переменной, чтобы поглотить пространство стека.И единственный тип значения типа, который подходит для того, чтобы получить вас где-либо с этим, - это структура.Это сложно , вам нужно будет объявить структуру, в которой четверть миллиона членов, давать или брать.Единственный возможный способ получить один из них - это структура, которая была автоматически сгенерирована из какого-то инструмента, и огромная схема базы данных.
Этого просто не происходит.Конечно, проблема находится в вашем провайдере базы данных.Неизменно написано на C или C ++.И делать что-то неприятное, например, использовать _alloca (), чтобы уничтожить стек.Ключевое слово stackalloc в C #.Я не буду упоминать утилиту editbin.exe с аргументом / stack, чтобы увеличить размер стека основного потока, вам не нужно с этим мириться.*