Per scrivere basterebbe

file.write((char*)v.img, v.values.n_textures_imgs * sizeof(GLuint));

ma per leggere, come fai ad usare il valore

v.values.n_textures_imgs

se non sai quanti sono gli elementi da leggere?