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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
#1

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

02.04.2013, 03:05. Просмотров 306. Ответов 8
Метки нет (Все метки)

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

Как выделить память? - C++
Нужно заполнить треугольную матрицу вида 1 1 1 1 1 - 1 - - На элементы с "-" память не должна выделяться. ...

Как выделить память с new? - C++
struct stat *buf; Как для структуры выделить память? Много способов перепробовал, но выдает ошибку. Добавлено через 3...

Как выделить память на HEX-е - C++
http://www.cyberforum.ru/attachment.php?attachmentid=578800&stc=1&d=1443205705 ...

Как выделить память для класса - C++
Привет, я пишу библиотеку управления памятью. На данный момент я выделяю память вот так void * __cdecl MyAlloc(size_t size) { void *...

Как выделить память для динамического массива? - C++
Как выделить память для динамического массива? typedef TPrimitives *TPrimitive; //... TPrimitives Primitives; Мне нужно выделить...

Как выделить память под массив в структуре? - C++
Здравствуйте , воnрос конечно глуnый , но голову я сижу ломаю долго , есть Структура , в ней есть массив , как nод этот массив выделить...

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

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


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

Добавлено через 3 часа 36 минут
Либо они могут выделить новый указатель и хранить часть элементов в старом указателе, а часть в новом.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
02.04.2013, 09:12     Как выделить некоторую память после некоторого адреса #5
Си'шный realloc запрашивает память сразу за уже выделенной.
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
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
02.04.2013, 20:53     Как выделить некоторую память после некоторого адреса #7
Цитата Сообщение от Olivеr Посмотреть сообщение
а если нужно уменьшить на один элемент
лучше просто уменьшать переменную размера, а не перевыделять память.
accept
4820 / 3240 / 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++
Как выделить память для двухмерного массива в С++ a=new int???

Как правильно выделить память под структуру? - C++
имеются структуры struct ship { struct point first; struct point last; }; struct point { int x;

Как выделить динамически память для данных класса - C++
Как выделить динамически память для данных класса ? class circle { double x,y,r; public:void In(); void Out(); ...

Как динамически выделить память для конструкторов класса? - C++
подскажите как динамически выделить память для конструкторов класса? class circle { double x,y,r; public: void...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru