Нет.Освобождает только память, выделенную в соответствующем вызове для malloc / calloc.Насколько известно, содержащиеся в нем указатели могут даже не быть указателями;free не знает структуру данных, которые ему передают.Он видит только необработанный адрес памяти и поэтому не может знать, содержит ли он указатели.
Я должен добавить, что хороший способ узнать, если у вас есть утечка памяти или нет, это проверить вашу программу с valgrindинструмент memcheck .У него есть инструмент для автоматического обнаружения утечек памяти.