Salve a tutti ragazzi, oggi per la prima volta dopo due anni sto avendo problemi con i puntatori.
Diciamo che è la prima volta che mi compare un inghippo del genere.

codice:
std::string Report::WSAGetLastError()
{
	int iError = ::WSAGetLastError();
	LPSTR buffer = NULL;
	FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0,iError,LANG_USER_DEFAULT,(LPSTR)&buffer,0,NULL);
	std::string error = buffer;
	return error;
}
Il codice funziona, mentre se invece di passare come paramentro (LPSTR)&buffer, passo solamente buffer, oppure &*buffer, non va!

Spiego il mio ragionamento:
LPSTR è un char *, quindi se passo un char * lui dovrebbe riuscire ad allocarci memoria, perchè gli passo l'indirizzo del puntatore, eppure non è così.

Se invece passassi &*buffer, dovrebbe andare perchè passo l'indirizzo del char a cui punta il puntatore, ma non è così!

Invece se passo &buffer, che in realtà non è un char * ma un char **!!!! e lo casto a char * funziona! non capisco minimamente il senso di questo comportamento, perfavore aiutatemi voi