HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Удаление данных, после использования
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



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

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

Просто реально надоело. по всему коду расставлять 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;

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

Вложение: materialsystem.rar (2.0 кб)
Этот файл был скачан 259 раз.

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

Сообщить модератору | IP: Записан
Сообщение: 66762

Старое сообщение 02-11-2010 20:29
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35059
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

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

__________________

Сообщить модератору | IP: Записан
Сообщение: 66763

Старое сообщение 02-11-2010 20:31
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33059
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | IP: Записан
Сообщение: 66766

Старое сообщение 02-11-2010 20:47
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



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

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

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


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

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

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

Сообщить модератору | IP: Записан
Сообщение: 66768

Старое сообщение 02-11-2010 21:02
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35059
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

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

__________________

Сообщить модератору | IP: Записан
Сообщение: 66769

Старое сообщение 02-11-2010 21:49
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33059
Нанёс повреждений: 392 ед.

Рейтинг



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

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

__________________
My Projects: download page

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

Цитата:

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

Сообщить модератору | IP: Записан
Сообщение: 66780

Старое сообщение 03-11-2010 06:55
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35059
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

__________________

Сообщить модератору | IP: Записан
Сообщение: 66786

Старое сообщение 03-11-2010 08:20
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33059
Нанёс повреждений: 392 ед.

Рейтинг



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

__________________
My Projects: download page

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

Цитата:

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

Сообщить модератору | IP: Записан
Сообщение: 66788

Старое сообщение 03-11-2010 08:23
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35059
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

__________________

Сообщить модератору | IP: Записан
Сообщение: 66792

Старое сообщение 03-11-2010 08:25
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



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

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

Сообщить модератору | IP: Записан
Сообщение: 66794

Старое сообщение 03-11-2010 08:39
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35059
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

__________________

Сообщить модератору | IP: Записан
Сообщение: 66795

Старое сообщение 03-11-2010 08:46
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



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

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

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

Скажем есть:

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

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

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

Сообщить модератору | IP: Записан
Сообщение: 66796

Старое сообщение 03-11-2010 09:58
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35059
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


fire64

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

__________________

Сообщить модератору | IP: Записан
Сообщение: 66798

Старое сообщение 03-11-2010 11:03
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



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

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

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

Сообщить модератору | IP: Записан
Сообщение: 66809

Старое сообщение 03-11-2010 15:29
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33059
Нанёс повреждений: 392 ед.

Рейтинг



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

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

__________________
My Projects: download page

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

Цитата:

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

Сообщить модератору | IP: Записан
Сообщение: 66811

Старое сообщение 03-11-2010 15:31
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 03:24. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Удаление данных, после использования
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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