Перейти к содержанию
    

Кооперативная RTOS для STM32

6 часов назад, haker_fox сказал:

Он (если ян е ошибаюсь), эквивалентен "свободному" (безбашенному) Си-кастованию)

Нет. Сишный каст действует как поочерёдные попытки применения всё более мощных xxx_cast<>(). Сначала const_cast<>, потом static_cast<>(), если и он не проходит, то reinterpret_cast<>(), и, наконец, комбинацию reinterpret_cast<> и const_cast<>(). Поэтому не всегда можно понять, какой именно каст получился. И в тексте сложно найти, где сишный каст. Но вроде бы и какие-то плюсы у него были...

10 минут назад, Сергей Борщ сказал:

Этот new не выделяет память. Фактически это вызов конструктора.

Да, память выделили malloc()-ом. Но без new обойтись не удалось, пусть он и не выделяет память. Это я к вот этой фразе:

4 часа назад, __inline__ сказал:

Для классов с инитом конструкторов - тольлько  new/delete.  Без вариантов! :don-t_mention:

Получается, что варианты есть, но для вызова конструктора - только new.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, AHTOXA сказал:

Получается, что варианты есть, но для вызова конструктора - только new.

Насколько я понял, автор цитируемой фразы ("Для классов с инитом конструкторов - тольлько  new/delete.  Без вариантов!") имел в виду, судя по тексту самой фразы, что если у класса есть конструктор, то обязательно будет выделение памяти (вызов new). Что совершенно неверно и выдаёт непонимание на уровне азов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, dxp said:

что если у класса есть конструктор, то обязательно будет выделение памяти (вызов new)

Вот я и так его и понял) При этом сильно удивился, т.к. использую классы с конструкторами и совершенно не использую new/delete/malloc/calloc.

6 minutes ago, dxp said:

Что совершенно неверно и выдаёт непонимание на уровне азов.

Меня до сих пор удивляет, когда люди говорят что-то в стиле, что Си++ это оверхэд в микроконтроллерах...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, haker_fox said:

Меня до сих пор удивляет, когда люди говорят что-то в стиле, что Си++ это оверхэд в микроконтроллерах...

 

А меня удивляет, что опять 1,5 участника форума сделали меня "крайним". :russian_ru:

 

Просвещаемся: https://gamedev.ru/code/forum/?id=251674

 

 

Как раз мой случай:

 

Quote

Классы С++ должны инициализироваться конструкторами и через malloc их так вот создавать нельзя.
Можно работать как со структурами Си (с помощью malloc) с классами которые являются POD (plain old data) - и такие в качестве одного из требований не должны ни на каком уровне внутри себя содержать классы-не-POD по значению (и разницы между ключевыми словами struct и class здесь нет).
Лучшим выходом тут было бы переписывание с malloc/free на new/delete, потому что с конструкторами оно там всё само правильно разрулит.

 

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, __inline__ said:

сделали меня "крайним".

Я не вас имел в виду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, dxp сказал:

Насколько я понял, автор цитируемой фразы ("Для классов с инитом конструкторов - тольлько  new/delete.  Без вариантов!") имел в виду, судя по тексту самой фразы, что если у класса есть конструктор, то обязательно будет выделение памяти (вызов new). Что совершенно неверно и выдаёт непонимание на уровне азов.

А мне показалось, что эта фраза была в контексте malloc vs new. Вряд ли уж @__inline__ не знает о возможности статического создания объектов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, __inline__ сказал:

Классы С++ должны инициализироваться конструкторами и через malloc их так вот создавать нельзя.

Я же показал, что можно. И по вашей ссылке этот вариант был упомянут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот это http://wiki.pic24.ru/doku.php/osa/ref/intro топикстартеру предлагали?

Изменено пользователем Andrew_Q

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...