In all these cases, the elements of the list may be freed at the same time by specifying the appropriate free function as the second argument. In both cases, the string id is an arbitrary null-terminated string which provide additional information about the list. A list on disk may be either read or created with filetbl. If it doesn't exist, it is created with the specified size. If it does exist, and an id string is specified, the id string must match.
Lists created with filetbl are always direct lists.
An element will typically be some structure which doesn't contain pointers. When a list is read from disk, it is actually left on disk and manipulated there. If the table was opened read-write, the copy on the disk may be updated. To create a list with elements other than pointers, you must use the routine, inittbl , which provides many more options. When the elements of the list are the pointers which are passed to and from these routines, the flag direct should be zero.