zizi21
asked on
Invalid read of size 1
i am getting error : invalid read of size 1...
what does this mean...
what does this mean...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
with this options:valgrind --tool=memcheck --leak-check=yes --show-reachable=yes
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
It should be giving you a stack trace
ASKER
it says at 0x804A936:funct1(....)
it does not say the exact location..is there any option that i should use...
it does not say the exact location..is there any option that i should use...
There should be more .. something like
==9814== Invalid write of size 1
==9814== at 0x804841E: main (example2.c:6)
==9814== Address 0x1BA3607A is 0 bytes after a block of size 10 alloc'd
==9814== at 0x1B900DD0: malloc (vg_replace_malloc.c:131)
==9814== by 0x804840F: main (example2.c:5)
The values in the bracket are file name and line number
Can you copy paste the exact output.
==9814== Invalid write of size 1
==9814== at 0x804841E: main (example2.c:6)
==9814== Address 0x1BA3607A is 0 bytes after a block of size 10 alloc'd
==9814== at 0x1B900DD0: malloc (vg_replace_malloc.c:131)
==9814== by 0x804840F: main (example2.c:5)
The values in the bracket are file name and line number
Can you copy paste the exact output.
ASKER
=11411== Invalid read of size 1
==11411== at 0x804A936: computeA (in /test/main)
==11411== by 0x804B0E1: scan(in /test/main)
==11411== by 0x8048EFF: main (main.c:262)
==11411== Address 0x1EC1C029 is 0 bytes after a block of size 52428801 alloc'd
==11411== at 0x1B904984: malloc (vg_replace_malloc.c:131)
==11411== by 0x8048AC3: main (main.c:162)
==11411== at 0x804A936: computeA (in /test/main)
==11411== by 0x804B0E1: scan(in /test/main)
==11411== by 0x8048EFF: main (main.c:262)
==11411== Address 0x1EC1C029 is 0 bytes after a block of size 52428801 alloc'd
==11411== at 0x1B904984: malloc (vg_replace_malloc.c:131)
==11411== by 0x8048AC3: main (main.c:162)
ASKER
i went to the computeA function but i can't say which line it is happening...
This is odd ... it would print line numbers for only part of the trace. As far as I can tell your command line looks okay. Did you really allocate 52428801 bytes of memory? Wondering if the tool got clobbered ;-) Or were there some memory errors preceding this one?
ASKER
it is the first error and i have more similar errors after this...
i checked and i did allocate memory for 52428801
i checked and i did allocate memory for 52428801
>> i went to the computeA function but i can't say which line it is happening...
Can you show the computeA function ?
Can you show the computeA function ?
ASKER
actually, the code is very very long and i am not allowed to post any code as i would be penalised...i am a student...
i am grateful of all of you helping ...sorry for that...
i am grateful of all of you helping ...sorry for that...
>> the code is very very long
It is a good idea to split up your code into manageable functions (no longer than 10-15 lines is a good rule). Longer functions are more difficult to maintain, and it's easier to make mistakes.
You can look for the problem yourself, by checking all the locations where memory is read, and checking whether the reads are done within allocated memory blocks.
It is a good idea to split up your code into manageable functions (no longer than 10-15 lines is a good rule). Longer functions are more difficult to maintain, and it's easier to make mistakes.
You can look for the problem yourself, by checking all the locations where memory is read, and checking whether the reads are done within allocated memory blocks.
You can probably zip the code and upload to another site such as rapidshare or even ee-stuff.com and post a link here. Once we have found the problem, you can delete the file from the server.
ASKER
just saw this...the thing is solved ..thanks a million
ASKER