Ok. Un'ultima cosa...se voglio allocare dinamicamente diversi buffer (un array di struttura) posso fare così?

codice:
int _tmain(int argc, _TCHAR* argv[])
{
	using std::cout;
	using std::endl;
	int num_buf = 5;
	mybooks *guida;
	guida = (mybooks *) malloc(sizeof(mybooks)*num_buf);
	guida[0].autore = "author number zero";
	guida[4].autore = "author number for";
	cout << guida[0].autore << endl;
	cout << guida[4].autore << endl;
	free(guida);
	return 0;
}
Il codice funziona correttamente

qual'è la fidderenza tra:

guida = (mybooks *) malloc(sizeof(mybooks)*num_buf)

e

guida = (mybooks *) malloc(sizeof(mybooks*)*num_buf);

in questo ultimo caso però mi impalla quasi il compiltore e fa uscire una "unhandle execption" (finestra disassembly)