HeapAlloc समारोह MSDN पेज में संरेखण की गारंटी देता है निर्दिष्ट नहीं है, लेकिन मुझे लगता है कि यह GlobalAlloc है, जो स्मृति 8-बाइट गठबंधन वापस जाने के लिए गारंटी है की एक ही गारंटी होनी चाहिए इच्छुक हूँ (हालांकि भरोसा अनियंत्रित विशेषताओं पर बुराई है); आखिरकार, यह स्पष्ट रूप से कहा गया है कि ग्लोबल/लोकलएलोक हेपअलोक के आसपास सिर्फ रैपर हैं (हालांकि वे गठबंधन स्मृति प्राप्त करने के लिए पहले n बाइट्स को छोड़ सकते हैं - लेकिन मुझे लगता है कि यह बहुत ही असंभव है)।
यदि आप वास्तव में सुनिश्चित करना चाहते हैं, तो ग्लोबल अलाक, या यहां तक कि वर्चुअलअलोक का भी उपयोग करें, जिसका ग्रैन्युलरिटी पृष्ठ ग्रैन्युलरिटी है, जो आमतौर पर 4 केबी (आईआईआरसी) होता है, लेकिन इस मामले में छोटे आवंटन के लिए आप बहुत सारे बर्बाद कर देंगे याद।
वैसे, यदि आप सी ++ नए ऑपरेटर का उपयोग करते हैं, तो आपको निर्दिष्ट प्रकार के लिए स्मृति को गठबंधन करने की गारंटी दी जाती है: यह जाने का तरीका हो सकता है।
स्रोत
2010-05-10 20:52:10
यदि एमएसडीएन यह नहीं कहता है, तो * कोई गारंटी नहीं है *। यहां तक कि यदि आप 1000 लोगों से पूछते हैं और वे सभी अपनी मशीन पर 8 बाइट निर्धारित करते हैं, तो यह गारंटी नहीं है, और आपको शायद इस पर भरोसा नहीं करना चाहिए। –
मैं उपर्युक्त स्टेटमेंट के साथ सहमत हूं। आप यह देखने के लिए http://blogs.msdn.com/oldnewthing/archive/2007/12/27/6873648.aspx देख सकते हैं कि यह इसके प्रासंगिक है या नहीं। – torak
मैं सहमत हूं, कोई गारंटी नहीं है, लेकिन मैं यहां गारंटी की मांग नहीं कर रहा हूं: मैं अनुभव मांग रहा हूं। मुझे विश्वास है कि माइक्रोसॉफ्ट 8 बाइट्स के नीचे संरेखण को कभी कम नहीं करेगा, क्योंकि डबल अब और पठनीय नहीं होगा। मैं बस यह जानना चाहता हूं कि एम्बेडेड प्लेटफार्मों के लिए भी सच है। – Ondergetekende