Форум программистов, компьютерный форум CyberForum.ru

Как выделить некоторую память после некоторого адреса - C++

Восстановить пароль Регистрация
 
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
02.04.2013, 03:05     Как выделить некоторую память после некоторого адреса #1
В общем, есть указатель на конец последовательности (пусть будет pointer) какого-то типа, допустим int.
Требуется добавить в конец последовательности еще один элемент, то есть для начала надо выделить память размером 4байта (под int) сразу после pointer.
Как это сделать? Не спрашивайте почему и для чего)) Просто спортивный интерес)
Знаю, что надо копать в сторону std::allocator_traits
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2013, 03:05     Как выделить некоторую память после некоторого адреса
Посмотрите здесь:

C++ Как выделить память для класса
C++ Как выделить память для динамического массива?
C++ Как динамически выделить память для строкового массива?
C++ Как правильно выделить память под структуру?
Как выделить память? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.04.2013, 03:09     Как выделить некоторую память после некоторого адреса #2
А зачем тебе это нужно?
Сразу выделяй столько сколько нужно, либо выделяй новый указатель нужного размера, и перекопируй элементы.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
02.04.2013, 03:12  [ТС]     Как выделить некоторую память после некоторого адреса #3
Это медленный способ и мне он не подходит.

Цитата Сообщение от ninja2 Посмотреть сообщение
А зачем тебе это нужно?
Любопытство. Как то ж СТЛовские контейнеры это делают)
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.04.2013, 08:46     Как выделить некоторую память после некоторого адреса #4
Цитата Сообщение от Olivеr Посмотреть сообщение
Это медленный способ и мне он не подходит.


Любопытство. Как то ж СТЛовские контейнеры это делают)
Да наверно так же и делают. Заново выделяют указатель побольше, а затем перекопируют элементы.

Добавлено через 3 часа 36 минут
Либо они могут выделить новый указатель и хранить часть элементов в старом указателе, а часть в новом.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
02.04.2013, 09:12     Как выделить некоторую память после некоторого адреса #5
Си'шный realloc запрашивает память сразу за уже выделенной.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
02.04.2013, 12:39  [ТС]     Как выделить некоторую память после некоторого адреса #6
Croessmah, а если нужно уменьшить на один элемент, то тоже использовать realloc ?
C++
1
2
3
4
    int *pointer = (int*) malloc(10*sizeof(int)); //10 элементов
    if (pointer)
        pointer = (int*) realloc(pointer,9*sizeof(int)); //уменьшили на 1
    free(pointer);
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
02.04.2013, 20:53     Как выделить некоторую память после некоторого адреса #7
Цитата Сообщение от Olivеr Посмотреть сообщение
а если нужно уменьшить на один элемент
лучше просто уменьшать переменную размера, а не перевыделять память.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
15.06.2013, 12:28     Как выделить некоторую память после некоторого адреса #8
Цитата Сообщение от Croessmah Посмотреть сообщение
Си'шный realloc запрашивает память сразу за уже выделенной.
это не всегда

C89 (draft)
Код
4.10.3.4 The realloc function

...

Returns

   The realloc function returns either a null pointer or a pointer to
the possibly moved allocated space.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2013, 12:34     Как выделить некоторую память после некоторого адреса
Еще ссылки по теме:

C++ Как выделить динамически память для данных класса
Как выделить память под динамический двумерный массив C++
C++ Как динамически выделить память для конструкторов класса?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
15.06.2013, 12:34     Как выделить некоторую память после некоторого адреса #9
Цитата Сообщение от ninja2 Посмотреть сообщение
Да наверно так же и делают. Заново выделяют указатель побольше, а затем перекопируют элементы.
это было бы мучительно неудобно
Yandex
Объявления
15.06.2013, 12:34     Как выделить некоторую память после некоторого адреса
Ответ Создать тему
Опции темы

Текущее время: 08:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru