Re[3]: крепостные объекты
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.03.24 15:33
Оценка:
Здравствуйте, m2user, Вы писали:

M>ReadOnlyMemory появился только в свежих версиях .NET. А до этого всё спокойно делалось через GCHandle.Alloc(..., GCHandleType.Pinned).

Ровно его же и использует ReadOnlyMemory.

M>И ничего сложного в нем нет, если побитовая совместимость гарантирована.


M>
M>GCHandle gch = new GCHandle();
M>try {
M> gch = GCHandle.Alloc(..., GCHandleType.Pinned);
M> SomeExternalMethod(gch.AddrOfPinnedObject())
M>} finally {
M> if (gch.IsAllocated){
M>  gch.Free();
M> }
M>}
M>

Зачем всё вот это, когда есть fixed? Он сделает ровно то же без лишних приседаний с finally.
Пинить руками нужно только тогда, когда Alloc и Free делается в разных местах.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.