Allegro 5 api
#include <allegro5/allegro_memfile.h> ALLEGRO_FILE *al_open_memfile(void *mem, int64_t size, const char *mode)
Returns a file handle to the block of memory. All read and write operations act upon the memory directly, so it must not be freed while the file remains open.
The mode can be any combination of "r" (readable) and "w" (writable). Regardless of the mode, the file always opens at position 0. The file size is fixed and cannot be expanded.
It should be closed with al_fclose(3alleg5). After the file is closed, you are responsible for freeing the memory (if needed).