-
Notifications
You must be signed in to change notification settings - Fork 132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Memory Leak using ExtractImageChips<T>(Array2DBase, IEnumerable<ChipDetails>) #17
Comments
That's right. DLLEXPORT void array_delete(void* obj)
{
// dlib::array is template type.
// Ex. dlib::array<dlib::matrix<float, 31, 1>> does NOT equal to dlib::array<dlib::matrix<float>>
// Template argument is decided in compile time rather than runtime.
// So we can not specify template argument as variable.
// In other words, we have to call delete for void* because we do not known exact type.
// Unfortunately, dlib::array implement destructor.
// What should we do?
delete obj;
} However, I probably should check type and delete it for except for template types looks like dlib::array<dlib::matrix<float, 31, 1>>. |
I fixed it for me by modifying the wrapper: ` protected override void DisposeUnmanaged()
and adding the following native method:
|
Thank you so much!! |
OK, It should be ok. |
Fix by 5c34efa |
ExtractImageChips(Array2DBase, IEnumerable) leaks unmanaged memory. I use it in a realtime application every frame and end up with huge amounts of used memory that I verified to be unmanaged.
Looking at the code, I can see that Array<> does not clean up the elements (it just calls delete on the pointer). As Array<Array2D> has objects as content, I suspect this is where the memory gets leaked.
Any suggestions on how I can fix this?
The text was updated successfully, but these errors were encountered: