मैं स्मृति आवंटित करने के लिए Marshal.GlobalHAlloc
का उपयोग करता हूं। जैसा कि प्रलेखन कहता है: "यह विधि Win32 LocalAlloc फ़ंक्शन को कर्नेल 32.dll से उजागर करती है।"। GlobalAlloc
के दस्तावेज का कहना है कि यह 8 बाइट गठबंधन होगा लेकिन LocalAlloc
संरेखित करने के बारे में कुछ भी मत कहो।16 बाइट संरेखण के साथ स्मृति आवंटित कैसे करें?
उदाहरण के लिए मैं 1024 बाइट आवंटित करना चाहता हूं और सुनिश्चित करता हूं कि यह 16 तक गठबंधन है। क्या यह काम करेगा जब मैं 1024 + 16 बाइट आवंटित करता हूं तो मैं सूचक% 16 जांचता हूं? यदि परिणाम 0 है तो इसका मतलब है कि मेमोरी गठबंधन है, जब यह 0 नहीं है, तो मैं अपनी उम्मीदों को पूरा करने के लिए पॉइंटर बढ़ाता हूं। समस्या यह है कि मुझे नहीं पता, अगर मैंने संकेतक को गठबंधन किया है तो यह वास्तव में भौतिक स्मृति में गठबंधन है?