Isn't your DLL written in C++? You're not mixing new & free are you?
Storage got with new must be returned with delete, new [ ] with delete [ ]
but only malloc() with free().
Andy.
<[email protected]>
To
Developer support list for Wireshark <[email protected]>
cc
bcc
Subject
Re: [Wireshark-dev] Memory Leak
<[email protected]>
Please respond to : Developer support list for Wireshark
<[email protected]>
Sent by: [email protected]
25/03/2009 14:22
Hmm, we'll this is the first time i am working with memory and am just
learning all about it. In those examples they seem to allocate and free in
the same function, but i cant do that. In my dll i have one function that
allocates memory and passes a char * back to the dissector to set a
variable with it, then i have another function that frees it in the dll
(pass it the char * and free it with free((void *)variable);) but that
also gives me an error, so i'm not sure how and where to free the memory.
Greg
---- Gianluca Varenni <[email protected]> wrote:
=============
If the memory is allocated within the DLL, it should be freed from within
the DLL (i.e. you should provide a function exported by the DLL to free
such
memory).
Allocating memory with malloc in a DLL and free'ing it from outside the
DLL
is bad mojo.
http://msdn.microsoft.com/en-us/library/ms235460(VS.80).aspx
Have a nice day
GV
----- Original Message -----
From: <[email protected]>
To: <[email protected]>
Sent: Tuesday, March 24, 2009 9:57 AM
Subject: [Wireshark-dev] Memory Leak
> Hi all,
>
> So in my dissector, i call a dll that allocates memory for information
to
> be returned back for output, but when i try and free the memory, i get
an
> error. I was wondering what the scope of the memory would be and where i
> should free it, maybe i'm freeing it wrong. I allocate it in my dll
after
> if(tree) and free it at the end of the if statement. This is how i
> allocate:
>
> char * change = (char *)malloc(string.GetLength()+1);
> memset(change,0,string.GetLength()+1);
> ::strncpy_s(change, string.GetLength()+1, string, string.GetLength());
> return change;
>
> and i just want to use free(variable); but i get:
>
> HEAP[wireshark.exe]: Invalid Address specified to RtlFreeHeap( 027E0000,
> 05E8F998 )
> Windows has triggered a breakpoint in wireshark.exe.
>
> This may be due to a corruption of the heap, which indicates a bug in
> wireshark.exe or any of the DLLs it has loaded.
>
> This may also be due to the user pressing F12 while wireshark.exe has
> focus.
>
> The output window may have more diagnostic information.
>
> pointing to the:
> ::strncpy_s(change, string.GetLength()+1, string, string.GetLength());
> line
>
> Thanks for any help,
>
> Greg
>
___________________________________________________________________________
> Sent via: Wireshark-dev mailing list <[email protected]>
> Archives: http://www.wireshark.org/lists/wireshark-dev
> Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
>
mailto:[email protected]?subject=unsubscribe
___________________________________________________________________________
Sent via: Wireshark-dev mailing list <[email protected]>
Archives: http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
mailto:[email protected]?subject=unsubscribe
___________________________________________________________________________
Sent via: Wireshark-dev mailing list <[email protected]>
Archives: http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
mailto:[email protected]?subject=unsubscribe
IMPORTANT - CONFIDENTIALITY NOTICE - This e-mail is intended only for the
use of the addressee/s above. It may contain information which is
privileged, confidential or otherwise protected from disclosure under
applicable laws. If the reader of this transmission is not the intended
recipient, you are hereby notified that any dissemination, printing,
distribution, copying, disclosure or the taking of any action in reliance
on the contents of this information is strictly prohibited. If you have
received this transmission in error, please immediately notify us by reply
e-mail or using the address below and delete the message and any
attachments from your system.
Amadeus Services Ltd, World Business Centre 3, 1208 Newall Road, Hounslow,
Middlesex, TW6 2TA, Registered number 4040059___________________________________________________________________________
Sent via: Wireshark-dev mailing list <[email protected]>
Archives: http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
mailto:[email protected]?subject=unsubscribe