Thanks for your reply..I can't rewrite the C wrapper for the C++ function so  I 
wrote  a delete wrapper like the below because I was getting a warning when it 
didn't have the char* and I heard you could  also use char* explicitly to 
remove warning.  My defcfun is standard it accepts a :pointer and returns 
void....I use it in my programs wherever memory need to get deleted ...I'm 
pretty good at knowing where to put the memory freeing functions but I still am 
getting memory leaks that make me have to restart.The memory I'm trying to free 
is a Mat*, Mat is an OpenCV c++ class...any help is appreciated

void delete_ptr(void* ptr) {
    delete (char*)ptr;
}






On Saturday, March 22, 2014 2:31 PM, Daniel Herring <dherr...@tentpost.com> 
wrote:
 
On Sat, 22 Mar 2014, Joeish W wrote:
>
>
>> I have a whole list of C wrappers for OpenCV C++ functions like the one 
>> below. And all of them return a "new".  I can't change them because they are 
>> becoming part of OpenCV and it would make my library perfect to have a 
>> consistently
>> updated skeleton to wrap around. My question is in this case how would one 
>> of you free these "new" memory allocators...When I run them in any kind of
 loop.  It just eats up my ram, I
 end up having to restart my pc. Should I make a
>> "delete" wrapper and use that.
>> I've tried using foreign-free but I still have the same issue of having to 
>> restart. Any help is appreciated.
>> 
>> Mat* cv_create_Mat() {
>>     return new Mat();
>> }
>
>
>Hi Joeish,
>
>Long story short, you need to follow new() with delete().
>
>C++ new() and delete() extend C's malloc() and free() in roughly the 
>following way.
>
>T * new(args) {
>   T *x=(T *)malloc(sizeof(T));
>   x->T(args); // constructor (aka ctor)
>   return x;
>}
>
>void delete(T *x) {
>  
 if(x) {
>     x->~T(); // destructor (aka dtor)
>     free(x);
>   }
>}
>
>Note that both the constructor and destructor are fairly arbitrary 
>functions, and it is common for them to do additional memory management.
>
>
>- Daniel
>
>

Reply via email to