Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Динамическое распределение памяти


Рекомендуемые сообщения

Возник вопрос на счет того, можно ли увеличить размер памяти, который уже выделен, например, когда недостаточно того, что есть и нужно еще.

#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;}
Ссылка на комментарий
Поделиться на другие сайты

Эм-м-м... Кому выделен? И кому нужен?

Собственно, кто определяет-то, что нужно ещё? Если какое-то приложение чего-то хочет (по объёму ОЗУ) - больше того, что доступно, оно всё равно не получит.

Оффтоп
Ссылка на комментарий
Поделиться на другие сайты

ну предположим тип char размером 1 байт, я выделяю место в памяти для слова, например, из 5 символов - 5 байт, а считывается, например, из файла, слово длиной болеше, чем 5 символов (или 5 байт), так вот, я мне интересно, можно ли каким-либо способом увеличить то адресное пространство, которое я выделил изначально, т.е. из 5 байт увеличить до 10

Ссылка на комментарий
Поделиться на другие сайты

Выделить по-новой, переместить в заново выделенный массив старую информацию, считать новую. Достаточно затратно. Как варианты выхода - а) выделять сразу большой объем, который входные данные точно не превысят; б) выделять память под массив после предварительного определения полной длины данных; в) использовать std::vector.

Ссылка на комментарий
Поделиться на другие сайты

я где-то читал, что вроде realloc изменяет размер ранее выделенного блока памяти, но только не совсем понял как это работает, может кто-нить объяснить

Ссылка на комментарий
Поделиться на другие сайты

Имеется в виду вручную?

Тогда в Дельфе есть процедура

procedure ReallocMem(var P: Pointer; Size: Integer);

Указываете пойнтер на переменную и желаемый размер.

В Cи то же.

Ссылка на комментарий
Поделиться на другие сайты

Realloc - это из C. С new (C++) его сочетать точно не стоит. Про это у Страуструпа можешь почитать. Здесь доходчиво достаточно про собственно использование realloc написано.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...