Liberación de memoria Delphi FreeMem
1. La razón por la que no hay error es que el sistema operativo aún no ha utilizado esta memoria. Liberar y reutilizar son dos conceptos.
2. ZeroMemory y FreeMem son básicamente dos funciones con funciones diferentes. Una borra la memoria (la llena con 0) y la otra libera la memoria (devuelve los recursos al sistema operativo). ¿pelota?
3. CopyMemory solo copia 9 caracteres, la cadena debe terminar en 0 y no estableciste cero. Simplemente cambie GetMem(A^.pac, 100) a A^.pac := AllocMem(100).