Yo utilizo bookmarks pero no las utilizo como tú, y no me han fallado. Prefiero hacerlo al revés: liberar el elemento justo después de su último uso, en lugar de hacerlo como primera acción y dentro de un if.
Así me aseguro que después de su uso se borra y no tengo memoria ocupada.
Código Delphi
[-]procedure TfConciliacion.refrescar_posicionarPag;
var
marca: TBookMark;
begin
marca := qPagos.getbookmark;
recalcular_querys_p(datoPago.Text, fechaIni_p.Date, fechaFin_p.Date);
qPagos.GotoBookmark(marca);
qPagos.freebookmark(marca);
end;