В коде test_ok()
никогда не вызывается, поэтому malloc()
никогда не выполняется. Таким образом, распределение памяти не происходит, не возникает проблемы с утечкой памяти.
Любой достойный компилятор будет оптимизировать код test_ok()
, во всяком случае.
EDIT:
Если вы на самом деле сделать вызов test_ok()
из main()
, он в конечном счете вызвать функцию, выделить память с помощью вызова malloc()
[при условии, таНос успех] и ничего не делать. Итак, теоретически, да, у вас там будет утечка памяти, много.
Точка отметить: Как вы упомянули,
[...] после того, как функция возвращает [...]
если вы говорите о test_ok()
функции, нет, просто возвращаются от функции с указателем malloc-ed не вызывает утечку памяти. Утечка происходит, когда вы пропустите, чтобы освободить память после ее использования (без ссылки/больше не используется).
При выходе из программы, возвращаясь с main()
, все выделенные ячейки памяти будут распределены в любом случае. Проблема, связанная с утечкой памяти, появляется, когда программа продолжает работать.
Сказанное, согласно последним стандартам, void main()
не является допустимым сигналом для размещенных сред, вы должны использовать, по крайней мере, int main(void)
.
'test_ok' не называется .... – LPs
Ваш код не делает ничего, кроме как потратить циклы процессора. – tkausl
oops, только что добавленный вызов функции. –