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

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


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

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

#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 написано.

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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