У меня есть следующий код для выделения буфера
uns16 m_rawBuffer = new uns16[m_rawBufferSize];
pin_ptr<uns16> ptrAcqBuffer = m_rawBuffer;
Хотя это и есть pin_ptr, GC время от времени модифицирует ptrAcqBuffer.
Из документа я вижу
Закрепляющий указатель — это внутренний указатель, который предотвращает перемещение объекта, на который он указывает, в куче со сборкой мусора. То есть значение закрепляющего указателя не изменяется общеязыковой средой выполнения. Это необходимо, когда вы передаете адрес управляемого класса неуправляемой функции, чтобы адрес не изменился неожиданно во время разрешения вызова неуправляемой функции.
Для меня это не имеет смысла... Может кто-нибудь объяснить? Также, поскольку я создал m_rawBuffer с «новым», нужно ли мне «pin_ptr»?
Спасибо.