# Какво е динамична памет?

# Какво означава „В файл [динамична памет]“?

Това означава, че „sysprof“ смята, че функцията е извикана някъде в динамичната памет на програмата (където `malloc` заделя памет), а не в часта с код (където обикновено се намира изпълнимият код.) Има няколко възможни обяснения.

# JIT (динамична компилация) компилатори

Езици като Java могат да генерират изпълним код, докато програмата работи, и да го съхраняват в динамичната памет. В този случай „Sysprof“ точно отчита ситуацията.

# Оптимизиране на компилатори

C и C++ могат да оптимизират информацията, необходима за определяне на извикващия на функцията, така че тя се бърка с [динамична памет]. Все още може да определите колко често всяка функция се извиква от програмата, но не винаги откъде.

За gcc флагът `-fno-omit-frame-pointer` ще предотврати тази оптимизация. Флагът не винаги е необходим, например на x86_64 машини той е необходим само при -O3 оптимизация.

За да получите най-подробно и точно дърво на извикванията от неоптимизиран код, използвайте тези флагове: `-ggdb -fno-omit-frame-pointer -O0`