0

My code comes up with all green smiles on check50, but valgrind shows memory leaks. I don't think I fully understand pointers or malloc, yet.

Here's my code:

-code-

Here's valgrind:

~/workspace/pset4/bmp/ $ valgrind resize
==96876== Memcheck, a memory error detector
==96876== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==96876== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
==96876== Command: resize
==96876== 
COLUMNS=133;
LINES=10;
export COLUMNS LINES;
==96876== 
==96876== HEAP SUMMARY:
==96876==     in use at exit: 605 bytes in 4 blocks
==96876==   total heap usage: 4 allocs, 0 frees, 605 bytes allocated
==96876== 
==96876== 10 bytes in 1 blocks are definitely lost in loss record 1 of 4
==96876==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==96876==    by 0x401D3E: ??? (in /usr/bin/resize)
==96876==    by 0x400EA4: ??? (in /usr/bin/resize)
==96876==    by 0x4E58EC4: (below main) (libc-start.c:287)
==96876== 
==96876== 11 bytes in 1 blocks are definitely lost in loss record 2 of 4
==96876==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==96876==    by 0x401D3E: ??? (in /usr/bin/resize)
==96876==    by 0x400F9C: ??? (in /usr/bin/resize)
==96876==    by 0x4E58EC4: (below main) (libc-start.c:287)
==96876== 
==96876== 16 bytes in 1 blocks are definitely lost in loss record 3 of 4
==96876==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==96876==    by 0x401D3E: ??? (in /usr/bin/resize)
==96876==    by 0x400EDC: ??? (in /usr/bin/resize)
==96876==    by 0x4E58EC4: (below main) (libc-start.c:287)
==96876== 
==96876== LEAK SUMMARY:
==96876==    definitely lost: 37 bytes in 3 blocks
==96876==    indirectly lost: 0 bytes in 0 blocks
==96876==      possibly lost: 0 bytes in 0 blocks
==96876==    still reachable: 568 bytes in 1 blocks
==96876==         suppressed: 0 bytes in 0 blocks
==96876== Reachable blocks (those to which a pointer was found) are not shown.
==96876== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==96876== 
==96876== For counts of detected and suppressed errors, rerun with: -v
==96876== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)

Edit: Thanks, here's valgrind now.

All heap blocks were freed -- no leaks are possible

:)

1

There is a unix shell command called resize. It looks like you invoked that with your valgrind command, something like valgrind resize 2 small.bmp bigger.bmp instead of valgrind ./resize ..... The difference being the "dot-slash" in front of the program name to indicate present working directory.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .