Member 13006206 Ответов: 1

Как использовать marshal.structuretoptr для добавления записей с использованием структурированных типов.


Я новичок в Visual Basic и изучаю использование Marshal.StructureToPtr для хранения структур в выделенной памяти перед записью в файл.

Мой вопрос заключается в том, что если я напишу более одной записи (используя тип структуры) с помощью этой функции, заменит ли вторая запись первую в выделенной памяти? Другими словами, добавляются ли данные или заменяются каждый раз, когда я использую эту функцию?

Что я уже пробовал:

Не пробовал, так как функция не дает никаких указаний на то, что это возможно.

1 Ответов

Рейтинг:
1

Dave Kreskowiak

До тех пор, пока вы продолжаете предоставлять правильный указатель на то место, куда вы хотите скопировать структуру, и ваш неуправляемый код поддерживает добавление этих данных к любым существующим данным, Конечно, вы можете использовать его для "добавления" данных в свой блок памяти. Это не поможет тебе. Вы должны выполнить математику указателя, чтобы переместить указатель соответствующим образом наверх, куда будет скопирована следующая структура.

Если вы не переместите указатель, то перепишете то, что было раньше. Если вы не будете осторожны, у вас будет утечка, так как ссылки на старый объект не будут уменьшены должным образом.