Description

When information is requested for an object (for example, by using SCF_Session_getInfo()),
the result is placed in memory allocated for that request. This memory
must eventually be deallocated, or a memory leak will result. The deallocation
of memory can occur in one of two ways.

The simplest method is to allow the smartcard library to automatically deallocate memory when the object associated with the information is closed. For example, when SCF_Card_close(3SMARTCARD) is called, any information obtained from SCF_Card_getInfo() for that card object is deallocated. The application is not required to call SCF_Card_freeInfo() at all.

If the object persists for a long period of time, the application can explicitly request the information to be deallocated without closing the object, so that memory is not wasted on unneeded storage. Similarly, if an application repeatedly requests information about an object (even the same information), the application can explicitly request deallocation as needed, so that memory usage does not continue to increase until the object is closed. In general, requesting information to be deallocated can be used to reduce runtime memory bloat.

Attempts to access deallocated memory result in undefined behavior.

Return Values

If the information is successfully deallocated, SCF_STATUS_SUCCESS is returned. Otherwise, an error
value is returned.

Errors

These functions will fail if:

SCF_STATUS_BADARGS

The specified value cannot be deallocated, possibly because of an invalid pointer, a value already deallocated, or because the value is not associated with the specified session, terminal, or card.

SCF_STATUS_BADHANDLE

The specified session, terminal, or card has been closed or is invalid.