Хотя, если не изменяет память, даже Квейк 3 писался на Си, а не Си++. Так что, народ справлялся как-то и без ООП (:
Во всех движках idTech < 4 весьма себе объектно-ориентированный стиль. В рамках Си, конечно.
Добавлено (18 июля 2017, 09:19) ---------------------------------------------
ЦитатаOtinagi ()
Для PC, иногда, да; для контроллеров - определённо нет.
Подскажи, как специалист, почему? Или у тебя доступ не последовательный, а по номеру в массиве? Если так, то тут спору нет - оно и на ПК медленнее. Я в своем проекте остановился на списках, потому что мне нужно быстро то добавлять, то удалять элементы, а динамические массивы в этой ситуации - это грустно. Плюс мне нужно всегда проходить от первого элемента к последнему и обрабатывать их, нет необходимости дергать что-то в центре, например (либо оооочень редко).
Сообщение отредактировал Vuvk - Вторник, 18 Июля 2017, 09:20
Сейчас поглядел что там в гамаке, а там нет разделения на collision_enter и collision_exit, так что если ты это запихнул в collision (при чем всё сразу)
Критика это когда тебе конкретно говорят, с чем есть проблемы и что желательно поправить. А вот когда тебе говорят, что у тебя по умолчанию всё говно и лучше вообще брось это дело и никогда не берись - это не критика (это я о своём печальном опыте).
ЦитатаEchoIT ()
понимаешь, он просто вроде бы взрослый человек, который и вести себя, в силу своего возраста, должен адекватно. Зачем так остро реагировать на всяких школьников (условно) с форума?
использование всяческих ООП-механизмов не думаю, что хорошо для Си
Без них разработка игр превращается в целую эпопею. Хотя и с ними не всё так гладко )
ЦитатаOtinagi ()
Ещё и с NULL надо быть внимательным. В некоторых стандартах для систем с повышенной отказоустойчывастью советуют после освобождения памяти или создании указателя ручками ещё указателю NULL присваивать, иначе проверка на NULL может потом не сработать.
Делаю это всегда. Без этого в моем проекте никак...
ЦитатаOtinagi ()
у MISRA-C много заметок по динамической работе с памятью
За наводку плюсик однозначно.
Добавлено (17 июля 2017, 10:29) ---------------------------------------------
ЦитатаOtinagi ()
У меня было нечто вроде списка задач, и это было сделано как массив структур
Думаю, что для списка надо было реализовать список, а не массив использовать. Это бы решило ряд проблем.
EchoIT, пообщался я с ним "вживую" в ТС и на удивление это оказался вполне себе обычный человек, наивный в чем-то, но всё же человек, а не тролль. Сам он здешних троллями считает. Но это вполне очевидно. HerrPotapov, это скорее похоже на то, что вы нашли "мальчика для битья". Я как-то попадал в подобную ситуацию. Написал на другом форуме с криками о помощи, а в ответ мне толпой начали писать всякие каки, что типа проект ГМО и сам я ГМО. Ясен-красен в защиту я поогрызался, а в ответку полетели минусы. Я тут же ретировался, т.к. кому-то что-то доказывать это дохлый номер. Sandar, кстати, подумай над этим. Я не в чью-то защиту сейчас пишу. Просто наблюдаю картинку, свойственную для рунета, когда кого-то затюкать это в порядке вещей. Sandar, а ещё я, если честно, в успех вашего проекта не верю, но поживем-увидим. Просто я натыкался на другого персонажа-организатора, который вдохновившись историями успешных стартапов решил, что сможет также. Влил неплохую сумму в очередного убийцу Сталкера (гораздо больше, чем ты намерен выделить), а выхлоп нулевой. Потом, когда деньги кончились, он решил набирать энтузиастов. Как итог - текучке кадров можно только позавидовать, а прогресс стремится к нулю. Хотят найти инвестора, но кто будет инвестировать проект, который тянется уже 8 лет, кажется, а даже демки полноценной до сих пор нет! Его тема где-то здесь на форуме тоже болтается.
а ещё ты мне так и не скинул описание к своим картинкам на почту
Сообщение отредактировал Vuvk - Понедельник, 17 Июля 2017, 07:01
указатели на виртуальные функции и которые да, действительно, мемсетом обнулять немножко глупо.
С этим все ясно. Есть ли какие-то ситуации, когда не глупо - вот в чем вопрос. Просто разобраться хочу.
Добавлено (16 июля 2017, 08:56) --------------------------------------------- Похоже в итоге натолкнулся на "неглупую" ситуацию, когда, по-видимому, не обойтись хотя бы без частичного затирания. Опишу вкратце. Я пишу на Си, но всячески имитирую ООП-механизмы. Для определения к какому "классу" относится созданный объект (на основе структур) в них зашит в заголовок идентификатор (у каждого свой). Например, текстура:
bool ObjectIsTexture(void* object) { if (object == NULL) return false;
if (*((uint32*)object) == TXR_IDENT) return true;
return false; }
Есть различные структуры, содержащие указатели на текстуру для использования. В случае, если текстура удалена, её нельзя использовать, как ресурс. Для этого производится такая проверка в момент обращения к ней:
Код
if (texture != NULL) { if (ObjectIsTexture (texture)) { /* использовать */ } else texture = NULL; }
Но если её не затереть (хотя бы идентификатор), то при обращении по адресу в мусоре может остаться верный идентификатор и всё, пиши пропало. Такие соображения. Если у кого есть что конструктивного заметить, я только за.
Сообщение отредактировал Vuvk - Воскресенье, 16 Июля 2017, 09:06
Всем привет! Вопрос у меня не только по С/С++, но и вообще. Однако т.к. я задумался над этим, когда писал код на Си, то и разместил его здесь. Вопрос ламерский ) Итак, суть: есть любая структура с несколькими полями -
Код
typedef struct { float x, y, z; int anything; } example_s;
В каком-то участке программы я её динамически создал:
Код
example_s* example = (example_s*)calloc(1, sizeof(example_s));
/* что-то с ней сделал и решил удалить */
memset(example, 0, sizeof(example_s)); /* вопрос */ free(example); example = NULL;
Вопрос следующий - есть ли какой-то смысл затирать (выставлять нули) все поля перед удалением структуры? Улучшает ли это в последующем какие-то процессы выделения памяти или в данном случае это не имеет значения? Читал, что для безопасности можно затирать пароли, логины, но вот в противовес так же читал, что компилятор с флагами оптимизации вырезает memset за ненадобностью, т.к. это бесполезно в данной ситуации. Но меня интересует не скрытие от злоумышленников каких-то данных, а в принципе как оно по фэн-шую.
Спасибо за внимание.
Сообщение отредактировал Vuvk - Вторник, 18 Июля 2017, 09:22