क्रैश करता है इसलिए मैं मिनीजीडब्ल्यू जीसीसी संस्करण 4.4 या थोड़ी देर का उपयोग कर रहा हूं, और यह तय करने का समय तय कर चुका है। मैं MinGW वेबसाइट पर गया और जीसीसी (4.7.0) का नवीनतम संस्करण डाउनलोड किया।सरल प्रोग्राम
मेरे पिछले संस्करण को हटाने और नवीनतम संस्करण स्थापित करने के बाद भी, सबसे सरल प्रोग्राम क्रैश हो जाएगा। उदाहरण के लिए, अगर मैं इस कार्यक्रम
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World" << endl;
return 0;
}
कमांड लाइन
g++ hello.cpp -o hello.exe
यह पता प्रिंट होगा "नमस्ते, दुनिया" और फिर दुर्घटना के साथ संकलन। हालांकि, अगर मैं इसे निम्न आदेश लाइन के साथ संकलन:
g++ -O3 hello.cpp -o hello.exe
यह बिल्कुल ठीक चलेगा, सब पर दुर्घटनाग्रस्त बिना।
अब, अगर मैं इनपुट कार्यक्रम बदलने के लिए, और यह थोड़ा और अधिक जटिल बना:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
cout << "Enter a string: ";
getline (cin, str);
if (str == "foo")
cout << "You entered foo!" << endl;
else
cout << "You entered: " << str;
return 0;
}
अनुकूलन विकल्प (-O3) के बिना, यह प्रिंट "एक स्ट्रिंग दर्ज करें:" इससे पहले कि दुर्घटना होगा हालांकि, , कोड अनुकूलन लाइन के साथ, यह एक स्ट्रिंग दर्ज करने के बाद दुर्घटनाग्रस्त हो जाता है।
अब, आखिर में मेरे प्रश्न पर। इसे ठीक करने के लिए मैं क्या कर सकता हूं, क्या मुझे इसका उपयोग करने के लिए बस जीसीसी के पिछले संस्करण पर वापस जाना होगा? साथ ही, जीसीसी एक साधारण कार्यक्रम को सही तरीके से संकलित क्यों नहीं करेगा?
अद्यतन: त्रुटि, जीसीसी स्थापना की वजह से किया गया था जब MinGW इंस्टालर के साथ स्थापित करने, और विकल्प "नवीनतम भंडार सूची डाउनलोड" करने के लिए, यह त्रुटि पुन: पेश हैं चुनने। हालांकि, अगर मैंने एक ही इंस्टॉलर का उपयोग किया और "प्री-पैकेड रिपोजिटरी कैटलॉग का उपयोग करें" चुना है, तो त्रुटि अब मौजूद नहीं है। तो MinGW GCC कैटलॉग में सूचीबद्ध बाइनरी के नवीनतम संस्करण में कुछ त्रुटि है।
लगता है जैसे आप अपनी डीबगिंग लाइब्रेरी को बोर्क करते हैं। तथ्य यह है कि ऑप्टिमाइज़ेशन समस्या हल करता है इसका मतलब है कि रिलीज रन-टाइम पुस्तकालय ठीक हैं। लेकिन डीबग रन-टाइम पुस्तकालय किसी भी तरह गलत तरीके से गलत हैं। – Mysticial
लेकिन उन्होंने कहा कि यह ऑप्टिमाइज़ेशन सक्षम के साथ दुर्घटनाग्रस्त है। –
तो शायद जीसीसी स्थापना के साथ कुछ गलत हो गया, संभावित रूप से कुछ भ्रष्ट हो गया? मैं इसे फिर से लोड कर दूंगा और यह देखने के लिए इसे पुनर्स्थापित करूँगा कि यह कुछ भी ठीक करता है या नहीं। – Alex