以下代码有什么问题(崩溃):
#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
它适用于x64以及我们将unsigned long long
更改为long long
甚至unsigned long
此代码段崩溃。在其他情况下,功能参数的地址会发生变化。
我怀疑它与_stol2
有关,将double
转换为unsigned long long