Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив в стеке и куче, А ну у себя проверьте.. 
:(
    Опции темы
Coocky
Дата 30.9.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Код

const long size = 39999996;
    long *pa = new long [size];

Вот так у меня работает...
Код

const long size = 39999996;
      long pa[size];

А вот так прога вылетает..
только 99999 катит..
А как у вас?


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Mad
Дата 30.9.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 7
Всего: 19



Цитата(Coocky @ 30.9.2005, 16:41)
А вот так прога вылетает..
только 99999 катит..

А ты посмотри в опциях компилятора сколько ты под стек выделяеш smile
У меня до 2М работало нормально, правдо при явном определении т.е

char pa[2097152];



--------------------
user posted image
PM MAIL   Вверх
Dreamer_0x01
Дата 30.9.2005, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 12



у меня тоже не работает...

Это сообщение отредактировал(а) Dreamer_0x01 - 30.9.2005, 18:42


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Mad
Дата 30.9.2005, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 7
Всего: 19



Цитата(MSDN)

/STACK:reserve[,commit]
The /STACK option sets the size of the stack in bytes. This option is only for use when building an .exe file.

This option specifies the total stack allocation in virtual memory. The default stack size is 1 MB. The linker rounds up the specified value to the nearest 4 bytes.

commit is subject to interpretation by the operating system. In Windows NT and Windows 2000 it specifies the amount of physical memory to allocate at a time. Committed virtual memory causes space to be reserved in the paging file. A higher commit value saves time when the application needs more stack space, but increases the memory requirements and possibly the startup time.

Specify the reserve and commit values in decimal or C-language notation.

Another way to set the size of the stack is with the STACKSIZE statement in a module-definition (.def) file. STACKSIZE overrides the Stack Allocations (/STACK) option if both are specified. You can change the stack after the .exe file is built by using the EDITBIN tool.

To set this linker option in the Visual Studio development environment

Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.
Click the Linker folder.
Click the System property page.
Modify one of the following properties:
Stack Commit Size
Stack Reserve Size
To set this linker option programmatically

See StackCommitSize and StackReserveSize properties.

See Also
Setting Linker Options | Linker Options





--------------------
user posted image
PM MAIL   Вверх
Coocky
Дата 30.9.2005, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Хех!
Не знал, что такое есть в стеке..
Хорошя вещь, спасибо.
А это на ВЕСЬ стек установка?
Т.е если у меня будет обьектов в функции более чем на 2 Мгб я тоже улечу?
Хотя Рихтер пишет, что стек работает медленее.
Но я предпочитаю стек, из-за забывания о delete smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
maxim1000
Дата 30.9.2005, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата
Хотя Рихтер пишет, что стек работает медленее

Рихтера не читал, интересно было бы посмотреть на его аргументы
как мне кажется, стек работает значительно быстрее:
1. выделение памяти new - долгое дело, выделение памяти в стеке - одна операция
2. т.к. вызов/возврат функций происходит очень часто, думаю, не будет большой натяжкой сказать, что стек находится в кеше процессора всегда (имеется в виду время исполнения конкретного потока)

куча, конечно же, значительно более гибкая, но чтобы быстрее... сильно сомневаюсь...


--------------------
qqq
PM WWW   Вверх
Mad
Дата 30.9.2005, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 7
Всего: 19



Цитата(maxim1000 @ 30.9.2005, 20:47)
Рихтера не читал

Тоже не читал smile
Цитата(maxim1000 @ 30.9.2005, 20:47)
стек работает значительно быстрее

тут не все так однозначно, очень много вариантов
в одних стек будет работать быстрей, в других куча, а в третих вообще все через globbal переменные

никогда нельзя утверждать, что один стиль программирования (а тут уже речь о стилях) быстрей, оптимизированней или лучше другово, все зависит от конкретной задачи, так что самое лучшее их комбинировать smile


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.