№ памяти, выделенной malloc
, останется выделенной до free
'd.
делать вещи, как это:
char * function(void)
{
char c = 'a';
return &c;
}
с другой стороны, это плохо, потому что этот объект действительно выходит за рамки, когда функция заканчивается.
malloc
выделяет память на кучу. Объявление переменных выделяет пространство в стеке. На стек влияет область видимости, куча - нет.
Для получения дополнительных сведений об использовании указателей, включая различные ошибки, такие как утечки памяти (процесс потери ссылки на malloc
'd-память, чтобы она сохранялась навсегда), посетите this link.
, когда функция завершается * A (указатель) на стек уничтожается, но память, выделенная для * A, все еще существует. Поскольку эта память больше не имеет действительного указателя, ее структура из системной памяти, т.е. называется утечкой памяти. Поэтому вы должны использовать free() всегда с malloc(); – linuxD