SQLFreeStmt is not recommended in ODBC 3.0 and later. However if the application needs to reuse the statement you should still use SQLFreeStmt with the SQL_RESET_PARAMS and SQL_UNBIND options). You might also use SQLCloseCursor, SQLBindParameter, SQLBindCol, SQLSetDescField, and SQLFreeHandle to replace or duplicate the function of SQLFreeStmt and should use them instead.
In general, it is more efficient to reuse statements than to drop them and allocate new ones. However in some situations, like the reusing of statements, SQLFreeStmt still must be used.