HLFX.Ru Forum
Показать все 19 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Удаление данных, после использования (https://hlfx.ru/forum/showthread.php?threadid=2431)


Отправлено fire64 02-11-2010 в 20:29:

Удаление данных, после использования

Подскажите, как правильно работать с памятью. что бы после выхода из функции буфер очищался.

Просто реально надоело. по всему коду расставлять delete.


В самом движке использую следующий код ( простой вариант ):

C++ Source Code:
1
filedata_t pTthFile = GetUnzipedVTF( (char *)pFileName );
2
 
3
if(!pTthFile.filelen)
4
{
5
  Warning( "\"%s\": cached version doesn't exist\n", pFileName );
6
  return MATERIAL_PREVIEW_IMAGE_BAD;
7
}
8
 
9
memcpy( buf.Base(), pTthFile.filebuf, nHeaderSize );
10
 
11
delete pTthFile.filebuf;


В сложном варианте происходит множество проверок текстуры и в случае провалов этих проверок приходится каждый раз писать delete pTthFile.filebuf;

п.с.
Исходник того, что я имею в виду прилагаю.

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 02-11-2010 в 20:31:

Цитата:
fire64 писал:
и в случае провалов этих проверок приходится каждый раз писать delete pTthFile.filebuf;

И что? Ты лентяй, что ли?
Ну ставь try-catch блок, бросай ексепшены, а в секции catch освобождай память..

__________________

xaerox on Vivino


Отправлено Дядя Миша 02-11-2010 в 20:47:

Цитата:
fire64 писал:
Просто реально надоело. по всему коду расставлять delete.

мемпулы спасут отца русской демократии. ну еще можно юзать поименованные хэнки или кэш (см. ку1). Но мне лично мемпулы больше нравятся.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено fire64 02-11-2010 в 21:02:

Ок спасибо за советы, в любом случае главное. что теперь есть поддержка TTZ и TTH текстур.

Помню в свое время возился над ними несколько дней. но ничего существенного тогда не добился.

Сейчас же написал все за час, и текстуры успешно грузятся.


Теперь вопрос к народу, никто не пытался написать загрузчик моделей из игры Vampire: The Masquerade - Bloodlines ?

Дело в том, что на данный момент - это единственная вещь, из-за которой я не могу выпустить Vampire SDK

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 02-11-2010 в 21:49:

Цитата:
fire64 писал:
это единственная вещь, из-за которой я не могу выпустить Vampire SDK

А есть люди, кому он нужен? Я не то что поиграть - скачать эту игру поленился.

__________________

xaerox on Vivino


Отправлено Дядя Миша 03-11-2010 в 06:55:

Цитата:
XaeroX писал:
А есть люди, кому он нужен?

ну один точно есть

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 03-11-2010 в 08:20:

Дядя Миша
Не говори загадками. Кто этот один?

__________________

xaerox on Vivino


Отправлено Дядя Миша 03-11-2010 в 08:23:

XaeroX да автор темы жы

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 03-11-2010 в 08:25:

То есть он для себя выпустить СДК не может, что ли?

__________________

xaerox on Vivino


Отправлено fire64 03-11-2010 в 08:39:

Вообще-то существуют довольно большие русские и англоязычные комьюнити посвященные этой игре.

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 03-11-2010 в 08:46:

fire64
Рассказывай, ога
Если бы они существовали - уже давно бы кто-нибудь сделал СДК.

__________________

xaerox on Vivino


Отправлено fire64 03-11-2010 в 09:58:

Ну почему же, отдельные программы есть.
Правда, редактора карт и компиляторов под эту игру нет.

Вопрос по кодингу:

Как определить смещение члена структуры относительно самой структуры.

Скажем есть:

C++ Source Code:
1
struct test_t
2
{
3
  int					a1;
4
  int					a2;
5
  int					a3;
6
  int					a4;
7
  int					a5;
8
};


Как определить смещение a4 ?

Понятно, что оно равно 12, так как int равно 4 и следовательно
sizeof(a1) + sizeof(a2) + sizeof(3) = 12

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

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 03-11-2010 в 11:03:

fire64

C++ Source Code:
#define offsetof(type, member)  (((char *) &(((type *) NULL)->member)) - ((char *) (type *) NULL))
 
int a4_offset = offsetof( test_t, a4 );

__________________

xaerox on Vivino


Отправлено fire64 03-11-2010 в 15:29:

Пока что удалось узнать размеры нескольких структур:

mstudiobone_t = 160 bytes
mstudioanimdesc_t = 72 bytes
mstudioseqdesc_t = 764 bytes

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Дядя Миша 03-11-2010 в 15:31:

Цитата:
XaeroX писал:
Если бы они существовали - уже давно бы кто-нибудь сделал СДК.

то-то исходники первохалфы до сих пор никто восстановить не могёт )

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Government-Man 03-11-2010 в 17:19:

XaeroX

C++ Source Code:
#define offsetof(type, member)  (((char *) &(((type *) NULL)->member))


А так нельзя чтоли?


Отправлено XaeroX 03-11-2010 в 17:24:

Цитата:
Дядя Миша писал:
то-то исходники первохалфы до сих пор никто восстановить не могёт

Лично мне это для моддинга не было нужно. ХЛФУ появиться не помешало.

Добавлено 03-11-2010 в 23:24:

Цитата:
Government-Man писал:
А так нельзя чтоли?

Ну да, тоже можно. Но мой вариант нагляднее.

__________________

xaerox on Vivino


Отправлено fire64 03-11-2010 в 20:07:

Мда.
После дня работы удалось загрузить модель в HLMV.

Работает:
Загрузка информации о модели.
Загрузка Flex анимации.
Загрузка хитбоксов.
Загрузка аттачментов.
Загрузка скелета.
Загрузка физической модели.

Не работает:
Загрузка меша.
Загрузка анимаций, ( операции с костями ).

Пока эти 2 пункта не будут завершены, толку от программы нет.

Завтра буду заниматься декомпиляцией софта для работы с моделями VTMB

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Дядя Миша 03-11-2010 в 21:18:

Цитата:
XaeroX писал:
Лично мне это для моддинга не было нужно. ХЛФУ появиться не помешало.

но и не помогло! Согласись, что зная устройство халфы изнутри, мы легко смогли бы с тобой избежать того идиотизма, навроде UTIL_GetClientEntityWithServerIndex, правильно записать зеркала и экраны в демку, пофиксить партиклы сменив WRITYE_BYTE на WRITE_ENTITY да и много чего еще. И уж конечно больше бы ругали себя чем "кривую халфу".

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 21:57.
Показать все 19 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024