Код: Выделить всё
uint8_t* allocateMem() {
return malloc(4096);
}
void freeMem(uint8_t* ptr) {
free(ptr);
}
Код: Выделить всё
[DllImport(memDllPath, CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr allocateMem();
[DllImport(memDllPath, CallingConvention = CallingConvention.Cdecl)]
static extern void freeMem(IntPtr ptr);
Код: Выделить всё
var mem = allocateMem();
var bytes = new byte[4096];
Marshal.Copy(mem, bytes, 0, 4096);
freeMem(mem); // is this ok?
Освобождена ли на это есть гарантия? Есть ли вероятность утечки памяти при использовании этого шаблона?
Пытаемся вызвать функции C из C#. Я хочу убедиться, что шаблон, который я использовал в коде, верен.
Подробнее здесь: https://stackoverflow.com/questions/792 ... allocation
Мобильная версия