Копирование в неуправляемой памяти - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Имеется указатель IntPtr на блок неуправляемой памяти. Мне необходимо скопировать в него строку string со смещением Делаю так:
string cmdline =«qwerty»;
int offset =20; 
int bufSize =offset+cmdline.Length+1;
 
IntPtr pbuf=Marshal.AllocHGlobal (bufSize );
IntPtr Ofbuf= IntPtr.Add(pbuf, offset);
 
Marshal.Copy(cmdline.ToCharArray(),0,Obuf, cmdline.Length);
 
Marshal.FreeHGlobal (pbuf);
Все вроде работает, но после выхода из метода вываливается ошибка работы с памятью. Не во всех запусках , а иногда. Собственно, вопрос - можно ли передавать такие смещения в функцию Copy, и есть ли альтернатива? Можно ли копировать из неуправляемой памяти в неуправляемую ? Просто из одного куска в другой со смещением или без

Решение задачи: «Копирование в неуправляемой памяти»

textual
Листинг программы
int bufSize =offset + cmdline.Length*2 /* !!!! */ + 1;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы