tonyk_av 45 27 декабря, 2022 Опубликовано 27 декабря, 2022 · Жалоба 3 hours ago, jenya7 said: А что С++ генерик тип <T> не отжирает память? Нет. Он просто строит код для каждого типа данных, который используется в программе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 27 декабря, 2022 Опубликовано 27 декабря, 2022 · Жалоба 45 minutes ago, AndyBig said: И, честно говоря, я так и не понял какой цели нужно достичь с помощью всего этого колдунства. Этот вопрос уже тут звучал. Но секретнейший военный проект не подразумевает никакого разглашения: все имена изменены на вымышленные, а применяемые решения заменены кринжовыми union подходами с void указателями и некими вымышленными "дженериками". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 27 декабря, 2022 Опубликовано 27 декабря, 2022 · Жалоба 7 часов назад, jenya7 сказал: С инициализацией проблем нет void *generic; uint8_t flag[8]; generic = &flag[4]; Вопрос как передать значение по типу данных. без дополнительных индикаторов (переменных) типа данных. если бы работал каст (uint8_t *) generic = &flag[4]; можно было сделать так int size = sizeof(generic); if (size == 1) (*((uint8_t *)generic)) = val; else (*((int *)generic)) = val; есть какой то метод или всё пропало? В случае с функцией на CPP можно было бы рассмтривать шаблоны, но сильно сомневаюсь что это сэкономило бы 100 байт. В любом случае, "частное" решение (как выше предлагается с type_id) будет эффективнее чем универсальное. По крайней мере "скорее всего". Сам использовал изворот как в нижней части цитаты, но не при присваивании значений переменных, а для присваивания "типовых" указателей из * void. switch( type_id) . . . . . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gridinp 3 27 декабря, 2022 Опубликовано 27 декабря, 2022 · Жалоба В 27.12.2022 в 19:30, tonyk_av сказал: Нет. Он просто строит код для каждого типа данных, который используется в программе. а как же тогда работает dynamic_cast? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 28 декабря, 2022 Опубликовано 28 декабря, 2022 · Жалоба 7 hours ago, gridinp said: а как же тогда работает dynamic_cast? В код помещается дополнительная информация о типах, что заметно увеличивает его. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gridinp 3 28 декабря, 2022 Опубликовано 28 декабря, 2022 (изменено) · Жалоба В 28.12.2022 в 06:30, tonyk_av сказал: В код помещается дополнительная информация о типах, что заметно увеличивает его. информация о типе есть в самом объекте, получить её можно через typeid, правда это касается только полиморфных типов, т.е. у которых есть таблица виртуальных функций Изменено 28 декабря, 2022 пользователем gridinp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 28 декабря, 2022 Опубликовано 28 декабря, 2022 · Жалоба 25 minutes ago, gridinp said: у которых есть таблица виртуальных функций ТС привел типичный сишный код, для которого, судя по всему, даже "+100 байт памяти" - уже настоящая трагедия Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndyBig 8 28 декабря, 2022 Опубликовано 28 декабря, 2022 · Жалоба Как я понял, ТС хочет динамически определять какой тип данных он поместил ранее по указанному адресу памяти и при этом не тратить память на хранение этой информации. Утопия... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 28 декабря, 2022 Опубликовано 28 декабря, 2022 · Жалоба 9 minutes ago, AndyBig said: Утопия... Лишь для случая, когда ВСЕ таблицы и индексы хранятся только в ОЗУ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 28 декабря, 2022 Опубликовано 28 декабря, 2022 · Жалоба 1 hour ago, Forger said: ТС привел типичный сишный код Поэтому я и предложил перегруженные функции или шаблоны, чтобы сохранить функциональный стиль. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndyBig 8 28 декабря, 2022 Опубликовано 28 декабря, 2022 · Жалоба 56 minutes ago, Forger said: Лишь для случая, когда ВСЕ таблицы и индексы хранятся только в ОЗУ... А как еще хранить динамические данные? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 28 декабря, 2022 Опубликовано 28 декабря, 2022 · Жалоба 15 minutes ago, AndyBig said: А как еще хранить динамические данные? А все ли данные там динамичные и предполагают изменения в рантайме? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 28 декабря, 2022 Опубликовано 28 декабря, 2022 · Жалоба 1 hour ago, Forger said: Лишь для случая, когда ВСЕ таблицы и индексы хранятся только в ОЗУ... Если объект создаётся в динамической памяти, то, ессно, информация о его типе будет храниться тамже, в ОЗУ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 28 декабря, 2022 Опубликовано 28 декабря, 2022 · Жалоба 58 minutes ago, tonyk_av said: сохранить функциональный стиль. Понятие "стиля" тут утеряно на первом же операторе приведения типа к указателю void* 😎 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 28 декабря, 2022 Опубликовано 28 декабря, 2022 · Жалоба 1 minute ago, Forger said: А все ли данные там динамичные и предполагают изменения в рантайме? Если они в ПЗУ, то тогда у ТС не было бы вопроса с передачей типа данных, храни себе в ПЗУ и мозг людям не мучай. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться