The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как увеличить размер стека C-программы?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Как увеличить размер стека C-программы?"  
Сообщение от Cont on 01-Май-09, 22:43 
В опциях ld нашел

--stack reserve
--stack reserve,commit
Specify the number of bytes of memory to reserve (and optionally commit) to be used as stack for this program.  The default is 2Mb reserved, 4K committed.  [This option is specific to the i386 PE targeted port of the linker]

Компилирую
gcc -Wl,--stack=0x1000000 -o t.cgi t.c
/usr/bin/ld: unrecognized option '--stack=0x1000000'

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

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как увеличить размер стека C-программы?"  
Сообщение от gaa (ok) on 01-Май-09, 23:08 
>[This option is specific to
>the i386 PE targeted port of the linker]

Учимся читать. i386 PE --- это под виндовс.

>Программа использует сложную и глубокую рекурсию, потому размер стека очень важен.
>Как быть?

Не использовать системный стек. Завести структуру данных типа stack и работать с ней соответствующим образом.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Как увеличить размер стека C-программы?"  
Сообщение от Cont on 02-Май-09, 00:53 
>Учимся читать. i386 PE --- это под виндовс.

Не знал этого. Только второй день С под Unix изучаю.

>>Программа использует сложную и глубокую рекурсию, потому размер стека очень важен.
>>Как быть?
>
>Не использовать системный стек. Завести структуру данных типа stack и работать с
>ней соответствующим образом.

На форуме я нашел тему про память, в которой добрые люди советовали использовать функцию setrlimit(). Стек через RLIMIT_STACK увеличил до 120-130 Мб. Больше пока не получается.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Как увеличить размер стека C-программы?"  
Сообщение от svn (??) on 02-Май-09, 02:22 
>Стек через RLIMIT_STACK увеличил до 120-130 Мб. Больше
>пока не получается.

Наверно потому, что нет больше виртуальной памяти (адресов свободных).

С другой стороны 120 мегабайт стека, это очень, очень много.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Как увеличить размер стека C-программы?"  
Сообщение от Cont on 02-Май-09, 10:00 
>Наверно потому, что нет больше виртуальной памяти (адресов свободных).

В куче я могу выделить в несколько раз больше.
И по 1Гб выделял. Здесь я честно ограничен только объемом виртуальной памяти.

>С другой стороны 120 мегабайт стека, это очень, очень много.

Хочется все. :) Экспериментировал с sigaltstack(), толку не было.
Видимо, там нужно использовать в связке sigaction(), а это мудрено.

Если хватать не будет, проще, по совету gaa, приспособить для стека кучу.
А если и этого не хватит, то придется решать мою NP-задачу простым перебором.
А это очень, очень долго. :)

Всем спасибо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Как увеличить размер стека C-программы?"  
Сообщение от const86 (ok) on 02-Май-09, 20:14 
>Экспериментировал с sigaltstack(), толку не было.
>Видимо, там нужно использовать в связке sigaction(), а это мудрено.

Это же про обработчики сигналов.
Смотрите pthread_attr_setstack(), если уж очень хочется стек тянуть. Но лучше всё-таки этим не заниматься.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру