Я нашел строку кода, в которой происходит утечка памяти в моем проекте.Это метод DllImport:
[DllImport("OpenCL")] public static extern Error clEnqueueNDRangeKernel(OpenCLCommandQueue command_queue, OpenCLKernel kernel, Int32 work_dim, [In] IntPtr[] global_work_offset, [In] IntPtr[] global_work_size, [In] IntPtr[] local_work_size, Int32 num_events_in_wait_list, [In] OpenCLEvent[] event_wait_list, out OpenCLEvent e);
Он вызывается с помощью этого кода:
OpenCLEvent e;
OpenCLDriver.clEnqueueNDRangeKernel(CommandQueue.OpenCLCommandQueue, OpenCLKernel, globalWorkSize.Length, globalWorkOffset, globalWorkSize, localWorkSize, eventWaitList.Count, eventWaitList.OpenCLEventArray, out e);
return null;
Такие вещи, как CommandQueue.OpenCLCommandQueue и другие аргументы, являются обычными свойствами или переменными, которые не могут пропускать память, за ними нет кода.
Я не понимаю, как clEnqueueNDRangeKernel может вызвать утечку памяти?Я что-то упустил?