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 का परीक्षण किया है? इसके साथ कुछ भी गलत नहीं है, इस प्रति के साथ कुछ भी गलत नहीं है, मेरे पास कई कंपाइलर्स के साथ कुछ भी गलत नहीं है (लेकिन मेरे पास विजुअल स्टूडियो नहीं है)। –
यह विजुअल स्टूडियो 2010/डीबग/win32 पर अपेक्षित के रूप में काम करता है, मैं इस समय 2012 में इसे आजमा नहीं सकता हूं, लेकिन जहां तक मुझे पता है कि इसे किसी भी कंपाइलर पर काम करना चाहिए। – jcoder