55 / 56 / 34
Регистрация: 29.12.2012
Сообщений: 478
|
||||||
1 | ||||||
Корректное высвобождение памяти в list01.06.2015, 21:43. Показов 2773. Ответов 52
Метки нет (Все метки)
У меня все нормально работает, ну и по логике тоже вроде нормально, но намучился с Коректным высвобождением памяти(ну пару раз упала программа,а может и больше).проверти нет ли утечки у меня...
ну если и поэлегантее способ сдесь есть то с удовольствием посмотрю...
0
|
01.06.2015, 21:43 | |
Ответы с готовыми решениями:
52
Долгое высвобождение памяти Высвобождение динамической памяти Высвобождение памяти статического массива Высвобождение памяти для 3 измерения массива |
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
|
|
19.06.2015, 09:48 | 21 |
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
||||||
19.06.2015, 09:57 | 22 | |||||
Ясно. Простой способ кривой записи глобальной переменной. Для этого класс вообще не нужен.
Добавлено через 5 минут А теперь покажите мне ответ на тот вопрос, который полностью соответствует моим указаниям.
Сообщение от daslex
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
19.06.2015, 10:02 | 23 |
глобальные переменные - глобальны. тобишь, доступны в любой точке программы любому желающему. статический член класса - собственность этого класса. его можно поместить в приватную зону, и тогда кто попало лазить, и чего то там менять уже не сможет. например, счетчик экземпляров класса. его увеличивать или уменьшать имеют право только экземпляры самого класса. представьте себе, если бы он был доступен любому и каждому. такой класс бы уже просто не смог бы гарантировать качество и стабильность своей работы. Добавлено через 3 минуты http://ideone.com/WhY8Q2
2
|
daslex
|
19.06.2015, 10:13
#24
|
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
19.06.2015, 10:26 | 25 | |||||
ну даже если и публичный.
если бы вы использовали для десяти разных классов 10 разных глобальных переменных, то как минимум, это было бы 10 разных имен глобальных переменных. уже не удобно. к тому же не очевидно, к чему эти переменные относятся. а так получается хорошо читабельная запись:
в качественном, профессиональном с++ коде не используют ни глобальных переменных, ни статических членов без крайней необходимости. (которая на моей памяти не возникала ни разу). потому что и то, и другое не безопасно. вместо этого используют локальные статические переменные.
1
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
19.06.2015, 11:18 | 26 |
Не по теме: Кому нам, мне? Я их не использую, поэтому о них не знаю, но бывает используют. Простой пример когда человек очень хорошо знает синтаксис языка, но его переклинило и из головы вылетела элементарнейшая деталь, он может её использовать. Прецеденты были в том числе на один из моих вопросов: "A как без static", был ответ "никак" , хотя потом другой человек поправил., что можно. Вот знал же, но деталь просто вылетела. Другой человек приводит примеры со static и говорит, что он препочел этот вариант, потому что посчитал этот способ лучше. И таких примеров много, когда лучших ответов у них за 1000. Добавлено через 3 минуты Не по теме: я В рекурсии static использую иногда'
0
|
55 / 56 / 34
Регистрация: 29.12.2012
Сообщений: 478
|
|
19.06.2015, 12:20 [ТС] | 27 |
daslex, у меня рядом компилятора небыло=)
Добавлено через 1 минуту потому и вроде Добавлено через 2 минуты не по теме: daslex, я раньше сувал static везде например для работы с масивом =)мне как то нравилось это... Добавлено через 42 секунды а как делать сообшения серым текстом кстате
0
|
daslex
|
19.06.2015, 12:22
#28
|
Не по теме: Чуть правее смайлов есть off
0
|
Черный мечник
|
19.06.2015, 12:56
[ТС]
#29
|
Не по теме: Спс
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
||||||
19.06.2015, 13:58 | 30 | |||||
hoggy, А это случаем не расценивается как дублирование кода? Просто очень на это похоже и мне даже с одним классом мозолит глаза.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
19.06.2015, 14:08 | 31 |
0
|
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
|
|
19.06.2015, 14:19 | 32 |
Это бред, приведу ваш пример со стратегией, на карте бегает 100 одинаковых юнитов у каждого свое здоровье,свое оружие, и т.д, но например одна текстура - если они все будут использовать один и тот же участок памяти, как тут быть без статического поля ? Примеров может быть больше - например программирование микроустройств где сильно ограничена память.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
19.06.2015, 14:26 | 33 |
одно и то же, но с небольшим отклонением -едва ли не дубль. Добавляя 1 значение, надо его описывать дважды, едва ли не дубль.
Я слишком не профи, чтобы говорить о проф., но я не исключаю, что static переменные используют для двух-трех переменных внутри класса, но исключаю, что их может быть слишком много внутри класса (10 уже черезчур), потому что слишком все это близко к дублированию.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
19.06.2015, 14:36 | 34 |
вы называете бредом вещи, в которых не разбираетесь.
1. если уж вам так сильно критично использовать статику, то к вашим услугам локальные статические переменные. с их помощью можно сделать все тоже самое, что и с обычными статическими переменными. но они не имеют недостатков последних и они безопасны. 2. по уму за такие вещи отвечает менеджер ресурсов. к вашим услушам смарт-указатели, которые умеют расшаривать права владения ресурсами между различными потребителями. Добавлено через 4 минуты не уверен, что уловил вашу мысль. на практике статические члены вообще не часто встречаются. а так, что бы их было много, да в одном классе... лично я такое видел только библиотеке CEGUI. там статическими std::string задавались всякие рантайм-идентификаторы. типа.. "это - кнопка", её менеджер "имя такое то", менеджер событие "имя такое то". и тп. менеджер сидит на менеджере и менеджером погоняет. уверен, что можно было бы сделать получше. ну да ладно. и нужно сказать - паршивая библиотека в плане дизайна использования.
1
|
daslex
|
19.06.2015, 14:47
#35
|
Не по теме: Все-таки встречается на практике :yahoo:
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|||||||||||
19.06.2015, 16:50 | 36 | ||||||||||
Да, еще добавлю. Я сделал именно двусвязный список потому что у Вас есть методы push_back, pop_back. Для односвязных списокв эти методы не особо-то и нужны, т.к. сложность добавления/извлечения O(n), когда в двусвязном списке эти же операции выполняются за O(1). В односвязный список нет смысла добавлять элемент в конец.
0
|
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
|
|
19.06.2015, 17:05 | 37 |
Собственно никто еще не привел, идеального списка - его фишка это удаление\добавление в произвольное место, с постоянной сложностью.
0
|
55 / 56 / 34
Регистрация: 29.12.2012
Сообщений: 478
|
|
19.06.2015, 17:08 [ТС] | 38 |
castorsky, спс, обязательно посмотрю сравню со своим,но эта так сказать реанимированая тема в которой пошли другие вопросы(обговоры), а тот список был базовым для двухсвязного...
за это спасибо, я это понимал, но сказать это правильно немог)
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
19.06.2015, 17:19 | 39 |
В первоначальной Вашей реализации есть серьезный архитектурный деффект. Скорее от непонимания либо самой структуры данных, либо ООП. Мой пример призван показать Вам что список с произвольным количеством элементов есть один экземпляр класса. У Вас каждое звено - отдельный экземпляр класса. Это главное, что я хотел донести.
Добавлено через 1 минуту хм... есть и другие структуры данных. Доступ к элементу массива, например, O(1).
0
|
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
|
|
19.06.2015, 17:30 | 40 |
и при чем тут статическое поле, когда они при помощи обычного указателя могут указывать на один участок памяти
0
|
19.06.2015, 17:30 | |
19.06.2015, 17:30 | |
Помогаю со студенческими работами здесь
40
Высвобождение памяти Free Си Высвобождение памяти компонента Высвобождение памяти массивов Высвобождение памяти занимаемой деревом. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |