free(): invalid pointer:

C

Cyron

Hello friends,

I'm getting a bizaare glibc error referencing free -- I malloc a
chunk of memory and then later when I try to free it is when the
program aborts. I've added some debug code to the source and find
that my pointer i get from malloc matches the one that I'm calling
free with -- and there is no possibility that have i have previously
freed the memory because there is only 1 free call in the entire
source (surrounded by debug printfs) so I don't know what is going on.
Any insight?

Thanks,
Mike
 
G

gw7rib

Hello friends,

I'm getting a bizaare glibc error referencing free -- I malloc a
chunk of memory and then later when I try to free it is when the
program aborts. I've added some debug code to the source and find
that my pointer i get from malloc matches the one that I'm calling
free with -- and there is no possibility that have i have previously
freed the memory because there is only 1 free call in the entire
source (surrounded by debug printfs) so I don't know what is going on.
Any insight?

Are you perhaps writing to memory just outside the memory you have
allocated?
 
F

Flash Gordon

Cyron wrote, On 30/09/07 21:03:
I'm getting a bizaare glibc error referencing free -- I malloc a
chunk of memory and then later when I try to free it is when the
program aborts. I've added some debug code to the source and find

<snip>

You are probably writing beyond the end or before the start of the
allocated space. If you can get the program down to a reasonably small
chunk of code that shows the problem we can take a look at it.
 
R

Richard Tobin

Cyron said:
I'm getting a bizaare glibc error referencing free -- I malloc a
chunk of memory and then later when I try to free it is when the
program aborts. I've added some debug code to the source and find
that my pointer i get from malloc matches the one that I'm calling
free with -- and there is no possibility that have i have previously
freed the memory because there is only 1 free call in the entire
source (surrounded by debug printfs) so I don't know what is going on.

You almost certainly have some kind of out-of-bounds pointer error.
Your first choice for finding such things, if you have one available,
is a memory-reference-checking tool such as valgrind. From your
reference to glibc, I assume you're using Linux, so valgrind should be
available. I find that 90% of the time it directs me straight to the
bug.

-- Richard
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,899
Latest member
RodneyMcAu

Latest Threads

Top