Re: memory leak?
- From: "Doug Harrison [MVP]" <dsh@xxxxxxxx>
- Date: Fri, 27 Jul 2007 19:04:41 -0500
On Fri, 27 Jul 2007 21:33:51 -0000, wanwan <ericwan78@xxxxxxxxx> wrote:
I ran my program is debug mode. I marked a breakpoint at the line
free(myPtr). I found out after stepping over the line, myPtr was still
pointing at a memory location. So free() had no effect on myPtr.
The function free() is part of the C Standard Library, and since C has only
pass-by-value, it is not possible for free(p) to modify the argument p.
That doesn't mean it didn't free the memory, though.
One thing to note is that in my program, I used another pointer
variable to allocate memory. Later on, the block of memory was passed
to myPtr as a pointer. Is there a rule that requires me to free memory
with the same pointer variable as the one I use to allocate memory? It
looks like the case to me.
No, that's not the case. That is, this is fine:
void* p = malloc(1);
void* q = p;
free(q);
// Now p and q are considered indeterminate, and the only legal thing
// you can do with them is assign them new values.
At what time (from what function), and in what context (EXE or DLL), are
you calling free? How are you linking to MFC (static or dynamic)? What is
the exact text of the leak report (copy it out of the debugger output
window)?
--
Doug Harrison
Visual C++ MVP
.
- Follow-Ups:
- Re: memory leak?
- From: wanwan
- Re: memory leak?
- References:
- memory leak?
- From: wanwan
- Re: memory leak?
- From: Joseph M . Newcomer
- Re: memory leak?
- From: Doug Harrison [MVP]
- Re: memory leak?
- From: wanwan
- memory leak?
- Prev by Date: Re: memory leak?
- Next by Date: Timer in a standard dll
- Previous by thread: Re: memory leak?
- Next by thread: Re: memory leak?
- Index(es):
Relevant Pages
|
Loading