Se ho capito, ti serve un buffer in memoria, grande quanto il tuo file.

Allora la tua idea è giusta, ma devi semplicemente portare prima dell'
istruzion tellg(), l'istruzione seekg (0, ios::end).
Cioè devi prima posizionarti alla fine del file, così quando richiedi la
posizione ottieni la lunghezza del file.

Devi cambiare da:
codice:
size = file.tellg();
memblock = new char [size];
file.seekg (0, ios::end); // <- Lo zero è un valore dimostrativo 
file.read (memblock, size);
a:
codice:
file.seekg (0, ios::end); // <- Lo zero va bene così
size = file.tellg();
memblock = new char [size];
file.read (memblock, size);
Se invece con
caricare il file (tutto il file) in un buffer e leggerne parti a piacere.
intendi leggere parti a piacere da uno stream, come mi sembra
di capire da

Per creare il buffer uso questo metodo :
ifstream file ("tekBassdrum.1.144.wav", ios::in|ios::binary);
devi semplicemente giostrare il tutto con seekg(spostamento,da_posizione)