5
什么是错用下面的代码(崩溃):双到'无符号长long`导致内存(堆栈?)腐败
#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 /调试/ Win32的
它工作在64位以及如果我们将unsigned long long
更改为long long
甚至unsigned long
此代码段崩溃。在其他情况下,功能参数的地址被改变。
我怀疑它是与_stol2
的double
到unsigned long long
尝试没有初始参数,字符串。 – unwind
你测试了这个MWE吗?它在视觉上没有什么问题,每个规范都没有错,使用我拥有的多个编译器没有错(但我没有Visual Studio)。 –
它在Visual Studio 2010/debug/win32上按预期工作,我目前无法在2012年试用它,但据我所知它应该可以在任何编译器上工作。 – jcoder