मैं थोड़ा उलझन में हूं कि मुझे अपने मुख्य विजेट को ढेर या ढेर पर प्रारंभ करना चाहिए या नहीं। क्यूटी 4 के साथ "सी ++ जीयूआई प्रोग्रामिंग" में, मुख्य विजेट स्टैक पर शुरू किए जाते हैं। इससे पहले कि मैं और अधिक कहते हैं, मैं समझा जाएगा कि मैं क्या मतलब है:क्यूटी - मुख्य विजेट - ढेर या ढेर?
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWin;
mainWin.show();
return app.exec();
}
अब, शायद यह सिर्फ इसलिए क्योंकि यह सुरक्षित है, शायद यह है क्योंकि वे क्यूटी में स्मृति आवंटन के बारे में पाठकों को भ्रमित नहीं करना चाहती है। QObject से विरासत में प्राप्त वस्तुओं पर किसी भी हटाए जाने से निश्चित रूप से पाठकों को QT ऑब्जेक्ट्स के साथ मेमोरी-प्रबंधन "भूलने" की अनुमति मिलती है। लेकिन, मेरे सवाल है, हम चाहते हैं कि विधि को प्राथमिकता देनी चाहिए, या निम्नलिखित:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow* mainWin = new MainWindow;
mainWin->show();
int execReturn = app.exec();
delete mainWin;
return execReturn;
}
मुख्य कारण मैं इस सवाल लाने मैं सामान्य रूप से ढेर ढेर बनाम चुनने के साथ एक पैटर्न का पालन करने के लिए पसंद किया जाता है:
- ढेर
- हैं आइटम में दीर्घकालिक है - - ढेर
- अन्यथा - आइटम बड़ा है, तो ढेर
अब, मैं मेरे सवाल का दो सवाल करने पर निर्भर करता है लगता है:
- QWidget बिंदु है जहां मैं स्टैक-अतिप्रवाह डर चाहिए करने के लिए बड़े है?
- औसत आवेदन के लिए ढेर कितना बड़ा है? मुझे ढेर को बहने के लिए डरना चाहिए (जाहिर तौर पर रिकर्सिव फ़ंक्शंस के अलावा)?
मुझे एहसास है कि QWidget स्वयं एक स्टैक-ओवरफ्लो का कारण बनता है, लेकिन निश्चित रूप से यह मेरे आवेदन के किसी अन्य स्टैक उपयोग के शीर्ष पर होगा।
ऑब्जेक्ट कितना बड़ा है यह देखने के लिए 'sizeof' का उपयोग करें। कोई "औसत ढेर" नहीं है, यह अनुप्रयोगों के बीच व्यापक रूप से भिन्न होता है, और सीमाएं प्लेटफ़ॉर्म द्वारा व्यापक रूप से भिन्न होती हैं। यदि आप चिंतित हैं, और चूंकि यह ट्रैक करना आसान है और बिल्कुल कोई प्रदर्शन पहलू नहीं है, तो केवल ढेर का उपयोग करें। – Mat
आप कहते हैं कि यह एप्लिकेशन द्वारा भिन्न है, मुझे लगता है कि आपका मतलब स्टैक-प्रयुक्त है, लेकिन उपलब्ध होने के बारे में क्या है। औसत प्रति एप्लिकेशन की तलाश करने के बजाय, पिछले 15 वर्षों में विंडोज, लिनक्स या मैक एप्लिकेशन के लिए न्यूनतम स्टैक-साइज क्या है? असल में, अगर मैं एक क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन बना रहा हूं, तो मुझे उत्सुकता है कि मुझे किन सीमाओं की अपेक्षा करनी चाहिए। --- आकार 20 दिखाता है, यह सटीक है, जो थोड़ा सा लगता है। – Serodis
उघ @ "स्टैक"/"हीप" –