Безопасно ли мувать память в TArray? int32* MemoryPtr = ...; int32 MemorySize

= ...;

TArray<int32> Kinos;
Kinos.SetNum(MemorySize);
FMemory::Memmove(Kinos.GetData(), MemoryPtr, MemorySize);

9 ответов

25 просмотров

https://docs.unrealengine.com/5.0/en-US/API/Runtime/Core/Containers/TArray/__ctor/8/

Валуев- Автор вопроса
Anton Rassadin
https://docs.unrealengine.com/5.0/en-US/API/Runtim...

Он копирует элементы, а не перемещает :( Он внутри вызывает CopyToEmpty

Валуев- Автор вопроса
Валуев
Перемещает же

Перемещает как?

Валуев- Автор вопроса
Anton Rassadin
Перемещает как?

Ну не совсем перемещает, но он по крайней мере новую память не использует

Валуев
Ну не совсем перемещает, но он по крайней мере нов...

не верно, memmove может двойной объём памяти использовать

Anton Rassadin
не верно, memmove может двойной объём памяти испол...

Вообще Despite being specified "as if" a temporary buffer is used, actual implementations of this function do not incur the overhead of double copying or extra memory. For small count, it may load up and write out registers; for larger blocks, a common approach (glibc and bsd libc) is to copy bytes forwards from the beginning of the buffer if the destination starts before the source, and backwards from the end otherwise, with a fall back to std::memcpy when there is no overlap at all. https://en.cppreference.com/w/cpp/string/byte/memmove или в анриловском не так?

Vladimir Shcherba
Вообще Despite being specified "as if" a temporary...

Да, именно так. Если не вдаваться в детали конкретной оптимизации этой функции, то можно представить, что она в худшем случае использует временный массив. В обычном случае она равно memcopy.

Похожие вопросы

Обсуждают сегодня

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта