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 написано. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.