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)


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

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

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

anonymous
()

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

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

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

anonymous
()

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

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