c++ - सी++ std:: vector के माध्यम से सीमाओं का उपयोग करना




c++11 dll (2)

न तो।

यह प्रक्रिया की आभासी स्मृति अंतरिक्ष में आवंटित है, जिसका कोड .exe और .dll का एक संयोजन है

मान लें कि EXE और DLL एक ही संकलक और एसटीएल संस्करण का उपयोग करते हैं। अगर मैं अपने EXE में std :: vector का उपयोग करता हूं और मेमोरी आरक्षित करने के लिए आरक्षित उपयोग करता हूं तब मैं इसे डीएलएल के संदर्भ में पास करता हूं

मैं अपने सदिश को एक तत्व जोड़ने के लिए DLL में एक push_back करता हूं अगर मैं वास्तविक क्षमता से अधिक नहीं हूं, तो क्या डीएलएल या एक्सईई में आवंटित नए तत्व की याद है?


यह आमतौर पर एक बुरा विचार है

जब आप push_back कॉल करते हैं, तो एक प्रति भी वेक्टर से जोड़ा जा सकता है। इसमें कोई गारंटी नहीं है कि उस ऑब्जेक्ट का आकार (अन्य चीजों के बीच) समान है: std::vector::reserve माध्यम से .exe में आरक्षित आकार के रूप में। दोनों बाइनरी एसटीएल के एक अलग संस्करण के साथ संकलित हो सकते हैं







stl