В настоящее время я занимаюсь утечкой памяти в коде C. Я поражен, увидев различные утечки памяти в другой аппаратной архитектуре.Различные утечки памяти в различной аппаратной архитектуре
Ниже утечка летний показано Valgrind в 64-битной архитектуры:
LEAK SUMMARY:
==4064== definitely lost: 1,600,192 bytes in 7 blocks
==4064== indirectly lost: 0 bytes in 0 blocks
==4064== possibly lost: 0 bytes in 0 blocks
==4064== still reachable: 3,217,416 bytes in 2,155 blocks
==4064== suppressed: 0 bytes in 0 blocks
==4064== Reachable blocks (those to which a pointer was found) are not shown.
==4064== To see them, rerun with: --leak-check=full --show-reachable=yes
==4064==
==4064== For counts of detected and suppressed errors, rerun with: -v
==4064== ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 4 from 4)
И следующее за 32-битной архитектуры
LEAK SUMMARY:
==29607== definitely lost: 1,600,048 bytes in 4 blocks .
==29607== indirectly lost: 456 bytes in 33 blocks.
==29607== possibly lost: 0 bytes in 0 blocks.
==29607== still reachable: 96 bytes in 12 blocks.
==29607== suppressed: 0 bytes in 0 blocks.
==29607== Reachable blocks (those to which a pointer was found) are not shown.
==29607== To see them, rerun with: --show-reachable=yes
Что может быть причины для этого.
Выход для нормально выходящей программы? Если он существует при сбое, он может терпеть неудачу в разных местах. Поскольку аварии обычно имеют отношение к управлению памятью, это может привести к сбою немного раньше или позже в каждой архитектуре, следовательно, большая разница. Обратите также внимание на то, что 64 бит обычно использует гораздо больше памяти, чем 32 бита (т. Е. Размер указателя и т. Д.). – 2010-12-08 20:55:52