2012-12-05 15 views
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 से कोई लेना देना कुछ ऐसा है जो doubleunsigned long long को

+0

प्रारंभिक तर्क, स्ट्रिंग के बिना यह प्रयास करें के रूप में है। – unwind

+1

क्या आपने इस MWE का परीक्षण किया है? इसके साथ कुछ भी गलत नहीं है, इस प्रति के साथ कुछ भी गलत नहीं है, मेरे पास कई कंपाइलर्स के साथ कुछ भी गलत नहीं है (लेकिन मेरे पास विजुअल स्टूडियो नहीं है)। –

+0

यह विजुअल स्टूडियो 2010/डीबग/win32 पर अपेक्षित के रूप में काम करता है, मैं इस समय 2012 में इसे आजमा नहीं सकता हूं, लेकिन जहां तक ​​मुझे पता है कि इसे किसी भी कंपाइलर पर काम करना चाहिए। – jcoder

उत्तर

संबंधित मुद्दे