переделал до вида
char *getline() {
char c = '\0';
size_t n = 0;
size_t page_size = 4096;
short max_size = 100;
short cur_size = 1;
char *str = new char[page_size];
while (cin.get(c) && c != '\n') {
if (n == cur_size * page_size) {
char *new_str = new char[++cur_size * page_size];
for (size_t i = 0; i < n; i++) {
new_str[i] = str[i];
}
delete [] str;
str = new_str;
}
str[n++] = c;
}
str[n] = '\0';
return str;
}
и понял, что ошибка скорее всего не в том, что выделяю память не страницами т.п. (т.к. это все-таки ученическое задание), а в месте, где копирую старый массив и использую sizeof(). В переписанном варианте уже оно не используется и правильно. Сейчас проверю на stepic, всего лишь убрать sizeof().
Пользователь решил продолжить мысль [time]25 Октябрь 2014, 18:40:54[/time]:
убрать sizeof() было мало, а полный код представленный только что подошел. Видимо я не выполнил условие по ограничению в 256 МБ, в старом коде не было никаких ограничений. В новом максимум 100*4096.
Спасибо за помощь
