Cosa c'è di sbagliato con il seguente codice (gli arresti):Doppio a `unsigned long long` provoca memoria (pila?) La corruzione
#include <string>
#include <iostream>
void foo(std::string str, unsigned long long val)
{
std::cout<< str<< " "<< val<< std::endl; // Crashes if commented as well
}
int main()
{
double d = 30.0;
foo("abc", d);
}
Visual Studio 2012/Debug/Win32
Funziona in x64 così come se cambiamo il unsigned long long
a long long
o anche unsigned long
Questo frammento di codice si arresta in modo anomalo. In altri scenari vengono modificati gli indirizzi dei parametri di funzione.
ho il sospetto che abbia qualcosa a che fare con _stol2
che converte il double
a unsigned long long
provare senza l'argomento iniziale, la stringa. – unwind
Avete testato questo MWE? Non c'è niente di sbagliato visivamente, non c'è niente di sbagliato in questo con le specifiche, non c'è niente di sbagliato in questo con i compilatori multipli che ho (ma non ho Visual Studio). –
Funziona come previsto su Visual Studio 2010/debug/win32, non posso provarlo sul 2012 al momento ma dovrebbe funzionare su qualsiasi compilatore per quanto ne so. – jcoder