little_greg Опубликовано 14 октября, 2010 Жалоба Поделиться Опубликовано 14 октября, 2010 Возник вопрос на счет того, можно ли увеличить размер памяти, который уже выделен, например, когда недостаточно того, что есть и нужно еще. #include <iostream>using namespace std;int main(){ char* str = new char[5]; int i = 0; while (cin.get(str[i]) && str[i]!='\n') i++; cout << str; return 0;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Yezhishe Опубликовано 14 октября, 2010 Жалоба Поделиться Опубликовано 14 октября, 2010 Эм-м-м... Кому выделен? И кому нужен? Собственно, кто определяет-то, что нужно ещё? Если какое-то приложение чего-то хочет (по объёму ОЗУ) - больше того, что доступно, оно всё равно не получит. Оффтоп Как в том анекдоте - "Съесть-то он съест, да кто ж ему даст-то?" Ссылка на комментарий Поделиться на другие сайты Поделиться
little_greg Опубликовано 15 октября, 2010 Автор Жалоба Поделиться Опубликовано 15 октября, 2010 ну предположим тип char размером 1 байт, я выделяю место в памяти для слова, например, из 5 символов - 5 байт, а считывается, например, из файла, слово длиной болеше, чем 5 символов (или 5 байт), так вот, я мне интересно, можно ли каким-либо способом увеличить то адресное пространство, которое я выделил изначально, т.е. из 5 байт увеличить до 10 Ссылка на комментарий Поделиться на другие сайты Поделиться
Amsterdam Опубликовано 20 октября, 2010 Жалоба Поделиться Опубликовано 20 октября, 2010 Выделить по-новой, переместить в заново выделенный массив старую информацию, считать новую. Достаточно затратно. Как варианты выхода - а) выделять сразу большой объем, который входные данные точно не превысят; б) выделять память под массив после предварительного определения полной длины данных; в) использовать std::vector. Ссылка на комментарий Поделиться на другие сайты Поделиться
little_greg Опубликовано 21 октября, 2010 Автор Жалоба Поделиться Опубликовано 21 октября, 2010 я где-то читал, что вроде realloc изменяет размер ранее выделенного блока памяти, но только не совсем понял как это работает, может кто-нить объяснить Ссылка на комментарий Поделиться на другие сайты Поделиться
Teddy_Bear Опубликовано 22 октября, 2010 Жалоба Поделиться Опубликовано 22 октября, 2010 Имеется в виду вручную? Тогда в Дельфе есть процедура procedure ReallocMem(var P: Pointer; Size: Integer); Указываете пойнтер на переменную и желаемый размер. В Cи то же. Ссылка на комментарий Поделиться на другие сайты Поделиться
Amsterdam Опубликовано 22 октября, 2010 Жалоба Поделиться Опубликовано 22 октября, 2010 Realloc - это из C. С new (C++) его сочетать точно не стоит. Про это у Страуструпа можешь почитать. Здесь доходчиво достаточно про собственно использование realloc написано. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти