PL_BLOB_NOCOPY flag set and the blob type implements the
release() 
callback. It causes the release() 
callback to be called, after which the data and size are set to 0 if the release() 
returns TRUE. After this sequence, the release() 
for this blob is never called again. The related atom_t 
handle remains valid until it is no longer referenced and reclaimed by 
the atom garbage collector. If the blob data is accessed using e.g., PL_get_blob() 
it returns NULL for the data and 0 for the size.228This 
means that any predicates or callbacks that use the blob must check the 
result of PL_blob_data(). 
If the release() 
function is not called, or if it returns FALSE, FALSE 
is returned.
PL_free_blob() 
may be called multiple times on the same
atom_t, provided the handle is still valid. Subsequent 
calls after a successful call have no effect and return FALSE.