ArrayPool<T>.Return(T[], Boolean) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает массив в пул, полученный ранее с помощью Rent(Int32) метода в том же ArrayPool<T> экземпляре.
public abstract void Return(T[] array, bool clearArray = false);
abstract member Return : 'T[] * bool -> unit
Public MustOverride Sub Return (array As T(), Optional clearArray As Boolean = false)
Параметры
- array
- T[]
Буфер, возвращаемый в пул, полученный ранее с помощью Rent(Int32) метода.
- clearArray
- Boolean
Указывает, следует ли очистить содержимое буфера перед повторной использованием. Если clearArray задано значение true, и если пул будет хранить буфер для включения последующего повторного использования, метод очищает Return(T[], Boolean) его содержимое, array чтобы последующий вызывающий объект с помощью Rent(Int32) метода не видел содержимое предыдущего вызывающего объекта. Если clearArray задано значение false или если пул выпустит буфер, содержимое массива остается неизменным.
Комментарии
После возвращения буфера в пул вызывающий объект отдается всем владельцам буфера и не должен его использовать. Ссылка, возвращаемая из заданного вызова Rent метода, должна быть возвращена только один раз с помощью Return метода. Значение по умолчанию ArrayPool<T> может удерживать возвращенный буфер для повторной аренды или освободить возвращенный буфер, если он определил, что пул уже имеет достаточно буферов.
Important
Возвращая одну ссылку на массив дважды или продолжая использовать ссылку на массив после возврата, это проблема безопасности с высоким уровнем серьезности. Эти действия могут привести к уязвимостям, которые могут привести к двойному освобождению и уязвимостям после использования , что может привести к повреждению данных, утечкам данных и отказу в обслуживании.