valgrind открива "все още достъпен теч" в празна програма, компилирана с gcc5.1, g++ ./a.cpp
,
int main () {}
valgrind казва, valgrind ./a.out
,
==32037== HEAP SUMMARY:
==32037== in use at exit: 72,704 bytes in 1 blocks
==32037== total heap usage: 1 allocs, 0 frees, 72,704 bytes allocated
==32037==
==32037== LEAK SUMMARY:
==32037== definitely lost: 0 bytes in 0 blocks
==32037== indirectly lost: 0 bytes in 0 blocks
==32037== possibly lost: 0 bytes in 0 blocks
==32037== still reachable: 72,704 bytes in 1 blocks
==32037== suppressed: 0 bytes in 0 blocks
==32037== Rerun with --leak-check=full to see details of leaked memory
==32037==
==32037== For counts of detected and suppressed errors, rerun with: -v
==32037== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 5 from 5)
За c програми valgrinds отчита липса на изтичане на памет и разпределяне на памет. В допълнение, за gcc5.0 и gcc4.9.2, valgrinds отчита липса на изтичане на памет и разпределение на памет. Тогава предполагам, че новият libstdc++ на gcc5.1 е причината.
Въпросът ми е как да намаля това огромно разпределение на паметта, което може да е в libstdc++. Наистина, времето за изпълнение на тази празна c++ програма, компилирана с -O3
, е по-голямо от това на празната c програма с няколко милисекунди (без системно време).
int main () {}
ли е? или има ли включва и други подобни? - person Eregrith   schedule 22.05.2015int main () {}
е точно съдържанието, аg++ ./a.cpp
е командата за компилиране, която използвах. - person akakatak   schedule 22.05.2015int main () {}
... уау gcc... уау.... - person Eregrith   schedule 22.05.2015gcc -E a.cpp
? Как изглежда.o
? - person Eregrith   schedule 22.05.2015g++ -E a.cpp
казва, # 1 test.cpp # 1 ‹built-in› # 1 ‹command-line› # 1 test.cpp int main () {} Мисля, че файлът obj. Няма по-непознати символи. Както и да е, връзката, предложена от user657267, може да каже нещо по същество. - person akakatak   schedule 22.05.2015