为什么这行代码泄漏内存?

问题描述 投票:0回答:2

我发现的代码行是在我的项目的内存泄漏。这是一个方法的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通话泄漏内存?我缺少的东西吗?

c# .net debugging memory-leaks
2个回答
2
投票

它似乎有在OpenCL的内存泄漏问题clEnqueueNDRangeKernel自2009年以来已知的,固定的2010 ...

http://www.opentk.com/node/1541?page=3 http://forums.amd.com/devforum/messageview.cfm?catid=390&threadid=122161&highlight_key=y


0
投票

你可以加

clFinish(CommandQueue);

clEnqueueNDRangeKernel
© www.soinside.com 2019 - 2024. All rights reserved.