में std :: आवंटक का उपयोग कैसे करें मैं एक कंटेनर क्लास लिखने की कोशिश कर रहा हूं जो एसटीएल आवंटकों का उपयोग करता है। क्या मैं वर्तमान में कर एक निजी सदस्यअपने स्वयं के कंटेनर वर्ग
std::allocator<T> alloc_;
(यह बाद में टेम्प्लेट की जाएगी ताकि उपयोगकर्ता एक अलग संभाजक चुन सकते हैं) के लिए और उसके बाद
T* ptr = alloc_.allocate(1,0);
फोन एक नव करने के लिए एक सूचक प्राप्त करने के लिए है आवंटित 'टी' ऑब्जेक्ट (और कन्स्ट्रक्टर को कॉल करने के लिए alloc_.construct का उपयोग किया गया; नीचे जवाब देखें)। यह जीएनयू सी ++ लाइब्रेरी के साथ काम करता है।
हालांकि, सोलारिस पर एसटीएलपोर्ट के साथ, यह सही काम करने में विफल रहता है और विचित्र स्मृति भ्रष्टाचार त्रुटियों के सभी प्रकार की ओर जाता है। यदि मैं इसके बजाय
std::allocator_interface<std::allocator<T> > alloc_;
तो यह सब काम कर रहा है जैसा कि यह करना चाहिए।
stl :: आवंटक का उपयोग करने का सही तरीका क्या है? एसटीएलपोर्ट/सोलारिस संस्करण जी ++ के साथ संकलित करने में विफल रहता है, लेकिन जी ++ सही है?
मानक पुस्तकालय में 'allocator_interface' नामक कुछ भी नहीं है। – AraK