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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.90
IamSCORPION
SysOp
38 / 37 / 1
Регистрация: 13.04.2009
Сообщений: 274
#1

Динамическое очищение массива - C++

08.09.2009, 01:57. Просмотров 5686. Ответов 6
Метки нет (Все метки)

Помогите пжлст) Нужно в программе при определенных обстоятельствах очистить массив.
C++
1
char n[10];
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
08.09.2009, 02:09     Динамическое очищение массива #2
Цитата Сообщение от IamSCORPION Посмотреть сообщение
Помогите пжлст) Нужно в программе при определённых обстоятельствах очистить массив.
C++
1
char n[10];
так?
C++
1
2
char n[10];
n[0] = '\0'; //
-=ЮрА=-
Заблокирован
Автор FAQ
08.09.2009, 09:23     Динамическое очищение массива #3
Вообще очистка производится при помощи free если память выделена malloc(...) и delete [] если память была выделена оператором new [], для char n[10] солидарен с ISergey т.к. в этом случае массив статический и оба варианта с free и delete выкинут исключения...
C++
1
2
3
4
5
6
7
8
9
//free :
 
char * chMass = (char *)malloc(nSybols*sizeof(char));
free(chMass);
 
//delete :
 
char * chMass = new char[nSymbols];
delete [] chMass;
Rififi
2336 / 1051 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
08.09.2009, 09:26     Динамическое очищение массива #4
ISergey,
char n[10];
n[0] = '\0'; //

...
-=ЮрА=-,
Вообще очистка производится при помощи free если память выделена malloc(...) и delete [] если память была выделена оператором new []


А теперь - правильный ответ (:
В первом случае будет обнулён только первый элемент, остальные по-прежнему будут содержать мусор. А с помощью free / delete [] происходит освобождение памяти, но никак не очистка.
для "Нужно в программе при определенных обстоятельствах очистить массив." необходимо использовать функцию memset:
memset(n, 0, sizeof(n) / sizeof(n[0]));
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
08.09.2009, 09:27     Динамическое очищение массива #5
memset
***
Rififi, опередил
***
альтернативная очистка:
C++
1
2
3
for (int i = 0; i != 10; i++) {
  n[i] = 0;
}
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
08.09.2009, 12:05     Динамическое очищение массива #6
*Ещё есть удобная функция bzero(void*, size_t), но не везде реализована...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2009, 18:18     Динамическое очищение массива
Еще ссылки по теме:

Динамическое создание массива C++
C++ Динамическое создания массива со случайной длинной
Динамическое создание двумерного массива string C++
Очищение динамического массива структур C++
Динамическое выделение памяти для массива C++

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

Или воспользуйтесь поиском по форуму:
IamSCORPION
SysOp
38 / 37 / 1
Регистрация: 13.04.2009
Сообщений: 274
08.09.2009, 18:18  [ТС]     Динамическое очищение массива #7
СПАСИБО всем кто откликнулся)))
Rififi
memset(n, 0, sizeof(n) / sizeof(n[0])); помогло)))Наконец игра работает без глюков!!!!Еще раз всем спс)
Yandex
Объявления
08.09.2009, 18:18     Динамическое очищение массива
Ответ Создать тему
Опции темы

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