Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 15791
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Вообще-то С++ относительно микроконтроллеров - это ардуино IDE...
Хотя там для начала весьма мало о том оговорено...
Приходится самому мозги ломать...
https://radiokot.ru/forum/viewtopic.php ... 4#p3680734
МНДЯАА...
8)
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18788
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

BOB51 писал(а):Вообще-то С++ относительно микроконтроллеров - это ардуино IDE...
:facepalm:
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Встал на лапы
Сообщения: 118
Зарегистрирован: Вс авг 18, 2019 13:22:01

Сообщение Trully »

В Ардуино не лезу по политическим соображениям уж извините. И кто из рядовых пользователей в Ардуино когда нибудь писал сам классы? Кажись там все только в маин пишут вызовы функций из скетчей и все. Как мне кажется даже разработчики скетчей для Ардуино не утруждаются дальше простого создания базовых классов и методов в нем.
to be or not to be = -1
Мудрый кот
Сообщения: 1840
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Trully",url="/forum/viewtopic.php?p=3685649#p3685649"]Но вот как удалить объект и что писать в деструкторе - освобождение памяти? - это пока не понятно.[/uquote]
Деструктор не освобождает память занятую объектом. Он не для этого. Он только разрушает объект.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 15791
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Trully Гляньте по ссылке.
Я как раз разборкой с теми классами и выносом фрагментов за пределы основного файла *.ino и разбираюсь.
Только вот никито из ГУРУ (за исключением Ser60 да Reflector) в том рассмотрении так и не поучаствовали (в полезном смысле)...
А таки вопрос весьма интересный.
И классы и работа с оными ПОДДЕРЖИВАЕТСЯ (правда за счет чего там - не мне разбираться спецкаталог за 4 гига в скрытых папках).
8)
Реклама
Мудрый кот
Сообщения: 1840
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="da-nie",url="/forum/viewtopic.php?p=3685708#p3685708"]Никогда не создавайте объекты иначе, чем через new. И не удаляйте иначе, чем через delete.[/uquote]
Почему это?
Для embedded я бы наоборот рекомендовал - никогда не создавать объектов через new.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18788
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

[uquote="jcxz",url="/forum/viewtopic.php?p=3686044#p3686044"][uquote="Trully",url="/forum/viewtopic.php?p=3685649#p3685649"]Но вот как удалить объект и что писать в деструкторе - освобождение памяти? - это пока не понятно.[/uquote]
Деструктор не освобождает память занятую объектом. Он не для этого. Он только разрушает объект.[/uquote]имхо, вы объяснили так, что ничего не понять.

назначение деструктора - освободить память, которую выделял для своих нужд объект, например, в конструкторе. ну и иногда сделать какие-то дополнительные "предсмертные" действия
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мудрый кот
Сообщения: 1840
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="ARV",url="/forum/viewtopic.php?p=3686049#p3686049"]назначение деструктора - освободить память, которую выделял для своих нужд объект, например, в конструкторе. ну и иногда сделать какие-то дополнительные "предсмертные" действия[/uquote]
Не обязательно память. Что угодно может освобождать и что угодно другое делать. Вот только память, занятую самим объектом, он не освобождает. О чём я и написал.
Эта память освобождается после завершения работы деструктора, отдельно. Или вообще не освобождается.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18788
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ну я не знаю, что еще в программировании, кроме памяти, можно освобождать :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

jcxz, Для МК с ограниченным объемом памяти я предпочитаю C, а не C++. Потому как C++ без STL большого смысла не имеет, а с STL - в такие МК все равно не лезет.

По теме. Деструктор освобождает ресурсы, которые были тем или иным образом захвачены при инициализации объекта и при вызове его методов. В частном случе, особенно на МК без ОС - это дополнительно выделенная память. В случае RTOS - это могут быть, например, семафоры или очереди.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18788
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ПростоНуб писал(а):В случае RTOS - это могут быть, например, семафоры или очереди.
можно подумать, что семафоры или очереди - не память :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

ARV, Если объект захватил ранее созданный кем-то семафор, то деструктор объекта должен только освободить семафор, но вовсе не удалять его.
Встал на лапы
Сообщения: 118
Зарегистрирован: Вс авг 18, 2019 13:22:01

Сообщение Trully »

То есть как я и предполагал - востребовано в основном в RTOS или при динамическом выделении памяти. Потому что в стеке переменные оказываются недействительными при выходе из функции. Указатель стека перемещается назад по памяти. Здесь я имею ввиду ядро ARM в STM32. Изначально меня интересовал вопрос именно в применении STM32.
Последний раз редактировалось Trully Вт авг 20, 2019 15:21:24, всего редактировалось 1 раз.
to be or not to be = -1
Мудрый кот
Сообщения: 1840
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="ARV",url="/forum/viewtopic.php?p=3686057#p3686057"]ну я не знаю, что еще в программировании, кроме памяти, можно освобождать :)[/uquote]
Любые занятые ресурсы: порты ввода/вывода, другие периферийные блоки, TCP-сокеты, семафоры и т.п.
Последний раз редактировалось jcxz Вт авг 20, 2019 15:22:49, всего редактировалось 1 раз.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18788
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

jcxz писал(а):порты ввода/вывода, другие периферийные блоки, семафоры и т.п.
это все "память" :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мудрый кот
Сообщения: 1840
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="ARV",url="/forum/viewtopic.php?p=3686072#p3686072"]это все "память" :)[/uquote]
Ну да, ещё скажите - это всё транзисторы. А значит - деструктор должен освобождать транзисторы :)))
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="ARV",url="/forum/viewtopic.php?p=3686072#p3686072"]
jcxz писал(а):порты ввода/вывода, другие периферийные блоки, семафоры и т.п.
это все "память" :)[/uquote]
Ну, например, остановить таймер, выключить постоянные преобразования АЦП или даже перевести пин из режима вывода в режим ввода - это энергосбережение, а не память. И все эти операции вполне могут возлагаться на деструктор объекта.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18788
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

jcxz писал(а):Он только разрушает объект.
я отвечал на вот это ваше утверждение. чтобы связать "разрушает объект" с "освобождает семафор", "освобождает мьютекс", "удаляает очередь" и т.п. вы не предприняли никаких услилий. в итоге "тема сисек не раскрыта". топикстартер заблуждался, считая, что деструктор освободит память из-под объекта, и вы безоговорочно отвергли это, не предложив по сути ничего более внятного. я это исправил, обозначив 2 задачи, которыми должен заниматься деструктор - все варианты, что вы тут приводите, сводятся к этим двум, даже к одному последнему - "выполняет предсмертные действия" :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3686061#p3686061"]Для МК с ограниченным объемом памяти я предпочитаю C, а не C++. Потому как C++ без STL большого смысла не имеет, а с STL - в такие МК все равно не лезет.[/uquote]
В С STL нет, все пишут сами, значит и на С++ можно написать, только оно будет более универсальное, простое в использовании, а при умелом обращении еще и более эффективное.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

ARV, по Вашей логике можно было ограничиться только вторым пунктом, так как освобождение памяти тоже является "предсмертным действием". Вот только польза от такого описания деструктора сомнительна. Люди лучше понимают предназначение чего-либо на практических примерах, чем на совершенно правильных, теоретических обобщениях )

Добавлено after 2 minutes 12 seconds:
Reflector, проблема в том, что чем универсальней что-либо - тем больше ресурсов оно потребляет без всякого толку. На ПК я так вообще STL почти не пользуюсь - QT хватает )
Ответить

Вернуться в «Разные вопросы по МК»