2015-07-06 2 views
-1

Если я не использовал функцию malloc или calloc в моей программе c. Итак, при этом время, когда начальный и конечный адрес памяти кучи программы такой же или другой? что означает размер памяти кучи.Память кучи для программы

+1

Библиотека времени C может выделяться в куче. – Bathsheba

+0

Кажется, у вас есть два вопроса, которые разные –

+1

Вы использовали какие-либо (сторонние) библиотеки? Потому что вполне возможно, что они могут использовать память кучи, если вы не назовете «malloc» где-нибудь –

ответ

0

Это полностью зависит от реализации. Ваша библиотека времени выполнения/код запуска C может уже помещать вещи в кучу до того, как вы вызовете функцию main.

+0

Если я не использовал заголовочный файл? – mrg

+1

'header file'! =' Runtime library' –

+0

Когда вы связываете свою программу, вводится статическая часть (для GCC, обычно это 'crt1.o' или' crti.o'), которая подготавливает среду C. Реальная точка входа вашей программы, вызываемая ядром Linux, фактически является «_start». Он подготавливает среду C, а затем вызывает вашу функцию 'main'. Точка входа может отличаться для других ОС, но принцип всегда один и тот же: перед вызовом 'main' вызывается код, который запускается компилятором. Это не зависит от использования заголовков. – DarkDust

Смежные вопросы