¿por qué la página de manual de C readdir dice que no llame gratis en la estructura de resultados asignada estática
$ uname -a
Linux crowsnest 2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 23:42:43 UTC 2011 x86_64 GNU/Linux
$ man readdir:
DESCRIPCIÓ
La función readdir () devuelve un puntero a una estructura directa que representa la siguiente entrada de directorio en la secuencia de directorio señalada por dirp ...
..[recorte]..
La función readdir_r () es una versión reentrante de readdir () ...
...[recorte]..
VALOR DEVUELTO
En caso de éxito, readdir () devuelve un puntero a una estructura directa. (Esta estructura puede asignarse estáticamente; no intente liberarla (3)). Si se alcanza el final de la secuencia del directorio, se devuelve NULL y no se modifica errno. Si se produce un error, se devuelve NULL y errno se establece correctamente.
La función readdir_r () devuelve 0 en caso de éxito. En caso de error, devuelve un número de error positivo. Si se alcanza el final de la secuencia del directorio, readdir_r () devuelve 0 y devuelve NULL en * resultado.
Estoy confundido acerca de lo que esto significa, mi aplicación de esta función es recopilar una matriz de punteros asignados dinámicamente a estructuras con datos sobre las entradas del directorio, y me pregunto si puedo asignar dinámicamente estructuras directas y establecer los punteros en ellos. pero esta línea parece decir que el resultado nunca debería ser llamado por libre, por lo que me pregunto si debería asignar una estructura directa separada que será parte de la lista y recordarla sobre el resultado devuelto.
También estoy confundido por la terminología de "mayo" en la página de manual anterior. ¿significa esto que a veces está estáticamente asignado y, a veces, no lo está?
Estoy familiarizado (vagamente) con lo que significan las variables estáticas en C, pero no estoy seguro acerca de todas las reglas y posibles problemas con ellas. porque quiero pasar las estructuras directas que están en un directorio, preferiría que se asignen dinámicamente. ¿Para eso es readdir_r? ¿o se configurará el puntero doble para que apunte a otra estructura direccional asignada estáticamente?
y no estoy completamente seguro de lo que significa reentrante en este contexto para readdir_r. mi comprensión de renetrante es solo de las rutinas de esquema que no estoy seguro de cómo se aplicaría a la lectura de directorios de Unix.