Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / [C++] Управление памятью (5 стр)

[C++] Управление памятью (5 стр)

Поделиться
Advanced: Тема повышенной сложности или важная.
Страницы: 14 5 6 7 8 Следующая »
ДемонПостоялецwww5 дек. 201712:57#60
Truthfinder
> Читай умные книжки, чтобы фарш из умных слов как-то уже начал походить на
> вменяемую речь. А то понахватался терминов, смысл которых далеко не всегда
> понимаешь.
Скажи что тебе тут не понятно, объясню чтобы и тебе понятно было
ДемонПостоялецwww5 дек. 201712:58#61
ЗЫ. Все равно рефакторинг, понятно что проще переписать всю систему, сделать 1 кучу, с остальных мест пусть по ID ломиться
TruthfinderПостоялецwww5 дек. 201713:04#62
Демон
> Скажи что тебе тут не понятно, объясню чтобы и тебе понятно было

> ... после чего во всех местах где попадает объект идет локальное удаление и отчет о нем ...

> после чего во всех местах где попадает объект
объект или указатель?
под объектом ты имеешь ввиду сам класс или конкретный экземпляр (инстанс) объекта данного класса?

> идет локальное удаление
видимо ты всё таки имеешь ввиду имя класса, потому что инстанс то конкретный, и он один, как ты его удалишь то несколько раз?

> и отчет о нем
какой, куда, зачем?

СтасПостоялецwww5 дек. 201713:04#63
Никогда не удаляй объекты в произвольных потоках, доступ к которым может быть в более чем 1 потоке одновременно. Иначе тебе придется заниматься синхронизацией там где это вообще не нужно. Есть у тебя 8 потоков, которые имеют доступ до объекта, ну и пусть ставят флаг что объект не нужен. А в основном потоке, когда твои потоки отработали, выполняй сборку мусора.
0xc0deПостоялецwww5 дек. 201713:49#64
Демон
> Да новые стандарты плохо знаю, упустил момент. Необходимо решение позволяющее:
>
> 1) Владеть на равных объектом в нескольких местах одновременно, включая
> перекрестные ссылки
> 2) Передача прав управления объектом со всех мест сразу
> 3) Полное удаление объекта с множества мест одновременно
> 4) Производительность

По ощущениям, у тебя паранойя и боязнь работы с памятью. Ты не пробовал программировать на Java или C# ?

0xc0deПостоялецwww5 дек. 201713:51#65
Демон
> C++ позволяет стрелять в ногу если мне это захочется)

Ты уже выстрелил. Ты до сих пор не заметил, что у тебя память течет?

ДемонПостоялецwww5 дек. 201713:52#66
0xc0de
> Ты не пробовал программировать на Java или C# ?
Там вообще халява с памятью, но другая архитектура изначально. Равносильно сравнивать чистый C++ с .NET
0xc0deПостоялецwww5 дек. 201713:57#67
Демон
> Там вообще халява с памятью

Ну так это то, что тебе нужно :)

ДемонПостоялецwww5 дек. 201714:03#68
0xc0de
> Ну так это то, что тебе нужно :)
Только на C++, без .net и вообще не похожей архитектурой) буду ковырять для начала архитектуру бэка движка
СтасПостоялецwww5 дек. 201714:05#69
Демон
> Там вообще халява с памятью

Заблуждение, и ява, и шарп в умелых руках текут так что С++ позавидует.

Dmitry_MilkПостоялецwww5 дек. 201714:12#70
Можно вопрос с дивана? А в современном C++ со всеми этими unique_ptr и shared_ptr есть какая-то аналогия Rust-овского понятия заимствования ссылки? То есть, какая-то конструкция, которая бы позволяла передать объект, адресуемый unique_ptr, из скоупа-владельца в какие-то другие долгоживущие скоупы, чтоб там можно было временно попользоваться этим объектом (но не дольше, чем врямя жизни unique_ptr в скоупе-владельце).
0xc0deПостоялецwww5 дек. 201714:14#71
Dmitry_Milk

weak_ptr?

TruthfinderПостоялецwww5 дек. 201714:16#72
Dmitry_Milk
> Можно вопрос с дивана? А в современном C++ со всеми этими unique_ptr и
> shared_ptr есть какая-то аналогия Rust-овского понятия заимствования ссылки? То
> есть, какая-то конструкция, которая бы позволяла передать объект, адресуемый
> unique_ptr, из скоупа-владельца в какие-то другие долгоживущие скоупы, чтоб там
> можно было временно попользоваться этим объектом (но не дольше, чем врямя жизни
> unique_ptr в скоупе-владельце).

Тут скорее shared_ptr+weak_ptr. unique_ptr не предназначен для этой цели.

СтасПостоялецwww5 дек. 201714:17#73
Dmitry_Milk
> Можно вопрос с дивана? А в современном C++ со всеми этими unique_ptr и
> shared_ptr есть какая-то аналогия Rust-овского понятия заимствования ссылки? То
> есть, какая-то конструкция, которая бы позволяла передать объект, адресуемый
> unique_ptr, из скоупа-владельца в какие-то другие долгоживущие скоупы, чтоб там
> можно было временно попользоваться этим объектом (но не дольше, чем врямя жизни
> unique_ptr в скоупе-владельце).

Боже.... поток сознания....

void function( SomeClass * ptr)
{
 /// .... Do something
}

{
   unique_ptr <SomeClass>  ptr( new SomeClass );
   function( ptr );
}
// Здесь указатель уже уничтожен
Dmitry_MilkПостоялецwww5 дек. 201714:57#74
Truthfinder
> shared_ptr+weak_ptr

Не, так-то я конечно понимаю. Я имел в виду какую-нибудь аналогию Rust-овской возможности заимствования ссылок с контролем времени жизни во время компиляции. Похоже что нет, раз предлагается

Стас
> void function( SomeClass * ptr)

- просто автоматическое приведение unique_ptr к указателю. Но в "/// .... Do something" может оказаться что угодно, в том числе и сохранение указателя в поле какого-то долгоживущего объекта (возможно не непосредственно в самой function, а где-то в глубинах стека вызовов).

Страницы: 14 5 6 7 8 Следующая »

/ Форум / Программирование игр / Общее

Тема закрыта.

2001—2017 © GameDev.ru — Разработка игр