Страница 1 из 1

Realloc - что же такое..

Добавлено: 15 сен 2009, 05:19
borN_free
Захотелось мне в цикле добавлять к массиву память .. вообщем весь код писать не буду, интересует одна вещь, а именно:

Код: Выделить всё

int* mass=(int*)malloc(sizeof(int)); // выделяем память для одного инта
if (mass!=NULL)
     mass=(int*) realloc (mass, 5*sizeof(int)); // еще для 4. Всего 5
при просмотре в дебаге указателя mass и выражения sizeof(mass) обнаружил:

sizeof(mass) не меняется, сколько бы не выделял
mass содержит лишь первый элемент ..

В чем дело, объясните пожалуйсто..

Re: Realloc - что же такое..

Добавлено: 15 сен 2009, 09:29
BBB
mass объявлен как "указатель на int", так что его размер, разумеется, всегда будет равен 4.

mass содержит не "первый элемент", а УКАЗАТЕЛЬ на первый элемент. Точнее (т.к. в C массивы индексируются от 0), "указатель на элемент со смещением ноль".

Для получения УКАЗТЕЛЕЙ на последующие нужно использовать (mass+1), (mass+2) и т.д.

Т.е., нулевой элемент: *mass
первый элемент: *(mass+1)
второй элемент: *(mass+2)

Re: Realloc - что же такое..

Добавлено: 15 сен 2009, 12:26
borN_free
на счет sizeof(mass) спасибо, тупанул тут я. все остальное я знал :) , просто в некоторых компиляторах если в окно watch добавить указатель на массив, там показываются все его элементы..

и так вопрос опять же, массив все таки расширяется, при коде, который я написал?
Спасибо

.

Добавлено: 15 сен 2009, 13:29
BBB
borN_free писал(а):и так вопрос опять же, массив все таки расширяется, при коде, который я написал?
А почему он НЕ должен расшириться?
Формально говоря, расширяется кусок выделенной памяти. А уж как этот кусок интерпретировать - как массив или как-то еще - это уже другой вопрос ("кухня" того, кто эту память выделял).
Еще точно не помню, сохраняются ли в новом куске памяти данные, которые были в старом куске. Интуитивно кажется, что система должна об этом позаботится. Но наверняка не помню.

Re: Realloc - что же такое..

Добавлено: 15 сен 2009, 14:16
borN_free
Все работает, я разобрался. Спасибо. Можно закрыть тему.

Realloc что же такое

Добавлено: 16 сен 2009, 00:11
Typedite
но этот вариант мне не подходит. Может, есть ещё варианты?
кстати на этом форуме есть информация о галактической браузерной игре http://netassault.ru мне вот ли чно мне ничего не понятно не понимаю как играть

Re: Realloc - что же такое..

Добавлено: 16 сен 2009, 13:01
Romeo
&quot писал(а):Еще точно не помню, сохраняются ли в новом куске памяти данные, которые были в старом куске.
Сохраняются - гарантия стандарта.