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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.79
GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
#1

Массивы и строки char + освобождение памяти - C++

22.12.2011, 13:04. Просмотров 2673. Ответов 7
Метки нет (Все метки)

Не понимаю когда нужно освобождать память когда нет? Когда пользоваться delete[]

если я объявляю
char *Name=new char[32];
ему обязательно перед завершением работы программы дописывать
delete[]Name;
?
или если я объявляю
char Name[32];
тут нужно delete?
а еще не совсем понимаю когда у меня создается строка а когда массив одномерный?
подозрение что в первом случае был массив а в другом строка. или это везде был массив.. оО

еще интересно когда идет переполнение стека?
что делать чтобы его не было?

Добавлено через 6 минут
и еще, кстати, почему бы до кучи еще и переменные не удалять таким же образом?
int a;
delete []a;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
Эксперт C
15547 / 9889 / 1486
Регистрация: 24.12.2010
Сообщений: 18,494
22.12.2011, 13:49     Массивы и строки char + освобождение памяти #2
Цитата Сообщение от GBIT Посмотреть сообщение
если я объявляю
char *Name=new char[32];
ему обязательно перед завершением работы программы дописывать
delete[]Name;
Обязательно!

Цитата Сообщение от GBIT Посмотреть сообщение
или если я объявляю
char Name[32];
тут нужно delete?
Ни в коем случае!

Цитата Сообщение от GBIT Посмотреть сообщение
а еще не совсем понимаю когда у меня создается строка а когда массив одномерный?
подозрение что в первом случае был массив а в другом строка. или это везде был массив..
Строка = одномерный массив символов

Цитата Сообщение от GBIT Посмотреть сообщение
еще интересно когда идет переполнение стека?
что делать чтобы его не было?
Не объявлять слишком больших автоматических переменных.
Осторожно пользоваться рекурсией.
Выть на луну и рвать волосы на голове.

Цитата Сообщение от GBIT Посмотреть сообщение
и еще, кстати, почему бы до кучи еще и переменные не удалять таким же образом
Попробуй. Потом всем расскажешь
GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
22.12.2011, 13:57  [ТС]     Массивы и строки char + освобождение памяти #3
т.е. когда я просто объявляю
int a;
char Name[32];
на всех их идет выделение памяти из стека? а если переменная в стеке то ее удалять потом не нужно?
res
56 / 9 / 1
Регистрация: 05.04.2010
Сообщений: 143
22.12.2011, 14:01     Массивы и строки char + освобождение памяти #4
GBIT, удалять нужно только указатели, которых ты динамический выделяешь.
То-есть, на каждый new нужен delete.
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
22.12.2011, 14:02     Массивы и строки char + освобождение памяти #5
GBIT, именно.

Добавлено через 27 секунд
res, и, в дополнение, на каждый new[] - delete[].
Байт
Эксперт C
15547 / 9889 / 1486
Регистрация: 24.12.2010
Сообщений: 18,494
22.12.2011, 14:06     Массивы и строки char + освобождение памяти #6
Цитата Сообщение от GBIT Посмотреть сообщение
т.е. когда я просто объявляю
int a;
char Name[32];
на всех их идет выделение памяти из стека? а если переменная в стеке то ее удалять потом не нужно?
Стек для того и придуман. При входе в функцию (подпрограмму) выделяется область на все ее автоматические переменные (представь себе стопку книг, сверху кладется новая книга). При выходе эта книга снимается и сжигается.
silent_1991
22.12.2011, 14:08
  #7

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
При выходе эта книга снимается и сжигается
Жестоко

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2011, 14:10     Массивы и строки char + освобождение памяти
Еще ссылки по теме:

C++ Освобождение памяти в c++
C++ Освобождение памяти
Динамические массивы и освобождение памяти C++
Освобождение памяти для динамического масива типа char C++
C++ Освобождение памяти

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

Или воспользуйтесь поиском по форуму:
Байт
Эксперт C
15547 / 9889 / 1486
Регистрация: 24.12.2010
Сообщений: 18,494
22.12.2011, 14:10     Массивы и строки char + освобождение памяти #8
Цитата Сообщение от silent_1991 Посмотреть сообщение

Не по теме:


Жестоко

Не по теме:

Это я к тому, чтобы ТС не попытался эту книгу после выхода прочитать

Yandex
Объявления
22.12.2011, 14:10     Массивы и строки char + освобождение памяти
Ответ Создать тему
Опции темы

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