# 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`