Was mit dem folgenden Code (Abstürze) falsch ist:doppelt auf das `unsigned long long` verursacht Speicher (Stack?) Korruption
#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
Es in x64 funktioniert sowie wenn wir die unsigned long long
zu long long
oder sogar unsigned long
ändern Dieses Code-Snippet stürzt ab. In anderen Szenarien werden die Adressen der Funktionsparameter geändert.
Ich vermute, es hat etwas mit _stol2
zu tun hat, die die double
zu unsigned long long
Probieren Sie es ohne das erste Argument, die Zeichenfolge. – unwind
Haben Sie dieses MWE getestet? Es ist nichts falsch daran visuell, nichts falsch mit der Spezifikation, nichts falsch damit mit den mehreren Compilern, die ich habe (aber ich habe kein Visual Studio). –
Es funktioniert wie erwartet auf Visual Studio 2010/debug/win32, ich kann es im Moment 2012 nicht ausprobieren, aber es sollte soweit ich weiß mit jedem Compiler funktionieren. – jcoder