Двойное значение до «unsigned long 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

Он работает в x64, а также если мы изменим unsigned long long в long long или даже unsigned long

Этот фрагмент кода вылетает. В других сценариях адреса параметров функции изменяются.

Я подозреваю, что это как-то связано с _stol2 который преобразует double в unsigned long long

5

Решение

Отправлено в Microsoft как ошибка (принято)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]