Heap дегеніміз не?

"[heap] файлында" деген нені білдіреді?

Бұл sysprof функция код бөлімінен (әдетте орындалатын код орналасатын жер) емес, бағдарламаның үйіндісінен (heap) (malloc жад бөлетін жер) шақырылды деп есептейтінін білдіреді. Бұған бірнеше ықтимал түсіндірме бар.

JIT (Just in Time) компиляторлары

Java сияқты тілдер бағдарлама орындалып жатқанда орындалатын кодты жасап, оны үйіндіде сақтай алады. Sysprof мұндай жағдайда жағдайды дәл көрсетеді.

Оңтайландырушы компиляторлар

C және C++ компиляторлары функцияның шақырушысын анықтау үшін қажетті ақпаратты оңтайландырып тастауы мүмкін, сондықтан ол [heap] ретінде қате танылады. Сіз әлі де бағдарлама тарапынан әр функцияның қаншалықты жиі шақырылатынын біле аласыз, бірақ оның қай жерден шақырылғаны әрдайым белгілі болмайды.

gcc үшін -fno-omit-frame-pointer жалаушасы бұл оңтайландыруды болдырмайды. Жалауша әрдайым қажет емес, мысалы, x86_64 машиналарында ол тек -O3 оңтайландыруымен бірге қажет.

Оңтайландырылмаған кодтан ең егжей-тегжейлі және дәл шақырулар ағашын алу үшін мына жалаушаларды пайдаланыңыз: -ggdb -fno-omit-frame-pointer -O0