क्या कोई भी इस वाक्य का अनुवाद किसी भी व्यक्ति के लिए अप्रबंधित कोड और स्मृति प्रबंधन की जटिलताओं से अनजान है?बफर को 64 KB आकार में प्रक्रिया के लिए साझा ढेर से आवंटित किया गया है?
इस बफर के लिए भंडारण प्रक्रिया है कि आकार में 64 केबी के लिए एक साझा ढेर से आवंटित है। बफर का अधिकतम आकार ढेर उपयोग पर निर्भर करेगा।
यह कुछ दर्जन एमएसडीएन पृष्ठों पर मौजूद है, उदाहरण के लिए WriteConsole, लेकिन मुझे कोई एपीआई नहीं मिल रहा है जो अधिकतम आकार की गणना करेगा, इस तरह के सरणी को उड़ने से पहले होने की अनुमति है, अनुभवजन्य से मैं इसे 61 और 62.5 केबी के बीच कहीं कह सकता हूं (64, 63, 62 आदि को कॉल करके जब तक यह सेटिंग बंद नहीं हो जाता DllImport
का SetLastError
)। क्या GetTotalHeapSize
जैसी कोई चीज है (यदि यह विंडोज संस्करण, प्लेटफार्म आर्किटेक्चर, डिफॉल्ट इत्यादि से स्वतंत्र 64 केबी नहीं है) और GetCurrentHeapInUse
जैसी कुछ उपलब्ध है? मैं अधिकतम बाइट कैसे प्राप्त करूं जो मैं उस और अन्य पी/आमंत्रण विधियों को पास कर सकता हूं?
यहां एक झटका है। ढेर 64k सीमा पर होने की संभावना है। यदि ऐसा है, तो 'myptr = malloc (1)' पर कॉल करें और 'myptr और 0xFFFF' के मान का निरीक्षण करें। यह उपयोग की जाने वाली जगह की मात्रा के बहुत करीब होगा - शेष राशि उस संख्या के लगभग 64k से कम होगी। – Floris