Переполненеие стека
От: abb  
Дата: 02.12.02 09:10
Оценка:
Народ, интересно как это до меня решалось:
Пишу некоторые CGI ваяния, на С++ (я знаю что я извращенец итп), как мне избежать срыва стека если пользователь зашлет мне слишком много данных. Так получилось, что мне попадались в основном книги где это только упомяналось, но конкретных реализаций борьбы с этим злом не приводилось, может есть какие соображения на этот счет?
Re: Переполненеие стека
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.12.02 09:28
Оценка:
Здравствуйте, abb, Вы писали:

abb>Народ, интересно как это до меня решалось:

abb>Пишу некоторые CGI ваяния, на С++ (я знаю что я извращенец итп), как мне избежать срыва стека если пользователь зашлет мне слишком много данных. Так получилось, что мне попадались в основном книги где это только упомяналось, но конкретных реализаций борьбы с этим злом не приводилось, может есть какие соображения на этот счет?
Я думаю, не надо их класть в стек. Хип спасет.
Пользуюсь RSDN@Home 1.0 alpha 15, слушая The Neverhood — Mail Reading Room Music
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Переполненеие стека
От: abb  
Дата: 02.12.02 10:29
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Я думаю, не надо их класть в стек. Хип спасет.


Вы можете прокомментировать ваш пост?
Могу
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.12.02 11:39
Оценка:
Здравствуйте, abb, Вы писали:

abb>Вы можете прокомментировать ваш пост?

Хороший пост, правильный.
Просто вот так:
int processUserInputRecursively(void)
{
  char a[200];
  cin >> a;
  return processUserInput()+strlen(a);
}

делать не надо.
Надо вот так:
int processUserInputRecursively(void)
{
  char *a = new char[200];
  cin >> a;
  int r = strlen(a);
  delete[] a;
  return processUserInput()+r;
}
Пользуюсь RSDN@Home 1.0 alpha 15, слушая Нега-Неголь
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.