LINUX.ORG.RU

ПОЧЕМУ ????


0

0

#include "stdafx.h"

#include <fstream>

#include <string>

#include <string.h>

#include <iostream>

#include <list>

#include <algorithm> #include <windows.h>

using namespace std;

int main(int argc, char* argv[]) { string A[3][100000] ;

return 0; }

эта программа вылетает при исполнении если размерность мессива превышает 17000 почему???? пожалуйста помогите (VC 6/0)


Re: ПОЧЕМУ ????

потому что include <windows.h>

Аффтор выпей яду ... причем тут VC6.0?

gcc 3.3 скомпилил ... выполнилось все ок...

anonymous ()

Re: ПОЧЕМУ ????

Потому что не нужно помещать с стек (в терминах С делать автоматическими переменными, как A в main) слишком много данных.

Конкретное значение этого "слишком много" зависит от многих обстоятельств, но лучше просто не задаваться таким вопросом к использовать функции динамичесикого распределения памяти или контейнерные классы (в данном случае был бы уместен vector строк в смысле STL).

Вообще-то, вопрос задан не совсем четко, так что это только догадки. И, кстати, что такое VC 6/0? Я не знаю под Linux такого компилятора.

anonymous ()

Re: ПОЧЕМУ ????

У тебя массив из стека вылазит. Либо размещай его статически, либо динамически, либо `cl /?` и ищи параметр, который выставляет заданный размер стека для модуля.

kosmonavt ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.