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

как освободить только первый элемент массива, не трогая остальные? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
09.06.2012, 21:26     как освободить только первый элемент массива, не трогая остальные? #1
Есть код:

C
1
2
int *ptr;
ptr = (int*)calloc(10, sizeof(int));
собственно вопрос: как освободить только первый элемент массива? не трогая остальные
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2012, 21:26     как освободить только первый элемент массива, не трогая остальные?
Посмотрите здесь:

C++ Дан массив F[0:n-1].Сформировать два новых массива: первый содержит элементы, не превышающие заданного числа, а второй - все остальные
C++ Как удалить из одномерного массива первый отрицательный элемент
Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы C++
C++ Сформировать два массива из исходного: в первый записать отрицательные элементы, во второй – остальные
Как определить первый с конца четный элемент двумерного массива? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2012, 01:17     как освободить только первый элемент массива, не трогая остальные?
Еще ссылки по теме:

Поменять местами минимальный элемент и первый отрицательный элемент массива целых чисел C++
C++ Проверить, упорядочены ли элементы, заменить первый нулевой элемент и удалить указанный элемент из массива
Выводится в файл только первый символ строки, остальные пустые C++

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

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
12.06.2012, 01:17     как освободить только первый элемент массива, не трогая остальные? #21
C
1
2
3
4
5
int *ptr;
ptr = (int*)calloc(10, sizeof(int));
 
memmove(ptr, ptr+1, 9*sizeof(int));
ptr = (int*)realloc(ptr, 9*sizeof(int));
Только вот уменьшать область памяти на 1 элемент может оказаться излишним и накладным. Возможно лучше завести 2 размера: один показывает размер выделенной области памяти, второй — количество действительных элементов массива. Тогда если придётся добавлять элемент не придётся по новой довыделять память. А выделять/освобождать память можно будет значительными порциями.

Добавлено через 4 минуты
И да, если элементы двигать нельзя, то ответ на исходный вопрос прост: никак.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
12.06.2012, 01:17     как освободить только первый элемент массива, не трогая остальные?
Ответ Создать тему
Опции темы

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