दिलचस्प पोस्ट
C से C ++ फ़ंक्शन कैसे कॉल करें? एक तालिका में पंक्तियों को कैसे प्राप्त करें, जो किसी दूसरे तालिका में कोई समान पंक्ति नहीं है ES6 कॉलबैक बसा वादा? Autowired निर्भरता का इंजेक्शन विफल; इकाई फ़्रेमवर्क के साथ कैस्केडिंग हटाना – ईएफ द्वारा हटाए गए संबंधित संस्थाएं .NET 4 कॉन्फ़िग में 'लीगेसी V2RuntimeActivationPolicy' का उपयोग क्या करता है? एसक्यूएल सर्वर में फ्लोर की तारीख UIButton: हिट क्षेत्र को डिफ़ॉल्ट हिट क्षेत्र से बड़ा करना एक SWF को एक WebView में लोड करें सम्मिलित करने के लिए इष्टतम तरीका / समस्त स्ट्रिंग मेरे एंड्रॉइड परियोजना के साथ htmlunit का उपयोग कैसे करें स्प्रिंग एओपी बिंदुकूट जो इंटरफ़ेस पर एनोटेशन से मेल खाता है जावा में "कड़े" शब्द का उपयोग कब करना चाहिए? ASP.NET वेब फ़ॉर्म के साथ निर्भरता इंजेक्शन का उपयोग कैसे करें लूप के लिए नेस्टेड पायथन वैक्टरिंग

अधिकतम आकार जो एक सरणी को पकड़ सकता है?

सी # 2008 में, अधिकतम आकार जो एक सरणी को पकड़ सकता है?

Solutions Collecting From Web of "अधिकतम आकार जो एक सरणी को पकड़ सकता है?"

System.Int32.MaxValue 

यह मानते हुए कि आप System.ArraySystem.Array , यानी किसी भी सामान्य रूप से परिभाषित सरणी ( int[] , आदि) यह सरणी को पकड़ने वाली अधिकतम संख्या है। प्रत्येक मूल्य का आकार केवल उन्हें रखने के लिए उपलब्ध स्मृति या वर्चुअल मेमोरी के द्वारा सीमित होता है।

यह सीमा लागू की गई है क्योंकि System.Array एक Int32 का उपयोग करता है क्योंकि यह इंडेक्सर है, इसलिए केवल Int32 वैध मानों का उपयोग किया जा सकता है। इसके ऊपर, केवल सकारात्मक मान (यानी, >= 0 ) का उपयोग किया जा सकता है इसका अर्थ है कि किसी सरणी के आकार पर पूर्ण अधिकतम ऊपरी सीमा एक Int32 मानों पर पूर्ण अधिकतम ऊपरी है, जो कि Int32.MaxValue में उपलब्ध है और 2 ^ 31 या लगभग 2 अरब के बराबर है।

पूरी तरह से अलग नोट पर, यदि आप इस बारे में चिंता कर रहे हैं, तो संभवतः आप डेटा के बहुत सारे उपयोग कर रहे हैं, या तो सही या गलत तरीके से। इस मामले में, मैं एक सरणी के बजाय एक List<T> का उपयोग करने की कोशिश करूँगा, ताकि आप जितना आवश्यक हो उतना मेमोरी का उपयोग कर सकें। दरअसल, मैं एक List<T> या किसी अन्य सामान्य संग्रह प्रकारों का उपयोग हर समय करना चाहूंगा। इसका मतलब यह है कि जितनी ज्यादा मेमोरी आप वास्तव में उपयोग कर रहे हैं, उसे आवंटित किया जाएगा, लेकिन आप इसे अपने सामान्य ऐरे जैसे उपयोग कर सकते हैं।

नोट का दूसरा संग्रह Dictionary<int, T> जिसे आप एक सामान्य सरणी के रूप में भी इस्तेमाल कर सकते हैं, लेकिन केवल कम से कम आबादी होगी उदाहरण के लिए, निम्नलिखित कोड में, केवल एक तत्व बनाया जाएगा, 1000 की बजाय कि एक अरै बनाई जाएगी:

 Dictionary<int, string> foo = new Dictionary<int, string>(); foo[1000] = "Hello world!"; Console.WriteLine(foo[1000]); 

Dictionary का उपयोग करने से आपको सूचक का प्रकार नियंत्रित करने देता है, और आपको नकारात्मक मानों का उपयोग करने की अनुमति मिलती है। निरपेक्ष अधिकतम आकार के Dictionary<ulong, T> सरणी के लिए आप एक Dictionary<ulong, T> उपयोग कर सकते हैं, जो संभवतः आप के बारे में अधिक संभावित तत्व प्रदान कर सकते हैं

प्रति एमएसडीएन यह है

डिफ़ॉल्ट रूप से, एक अर्रे का अधिकतम आकार 2 गीगाबाइट (जीबी) है।

64-बिट परिवेश में, आप रन-टाइम वातावरण में जीसीएलोवविरलैज ऑब्जेक्ट कॉन्फ़िगरेशन एलीमेंट के सक्षम एट्रिब्यूट को सेट करके आकार प्रतिबंध से बच सकते हैं

हालांकि, सरणी अभी भी कुल 4 अरब तत्वों तक सीमित रहेंगी।

यहां देखें http://msdn.microsoft.com/en-us/library/System.Array(v=vs.110).aspx

नोट: यहां मैं मानता हूं कि हमारे पास पर्याप्त हार्डवेयर रैम होगा, यह मानकर मैं सरणी की वास्तविक लंबाई पर ध्यान केंद्रित कर रहा हूं।

यह उत्तर .NET 4.5 के बारे में है

एमएसडीएन के अनुसार , बाइट्स की सरणी का सूचक 2147483591 से अधिक नहीं हो सकता है। 4.5 से पहले एनएटी के लिए यह एक सरणी के लिए स्मृति सीमा भी थी। .NET 4.5 में यह अधिकतम समान है, लेकिन अन्य प्रकारों के लिए यह 2146435071 तक हो सकता है।

यह चित्रण के लिए कोड है:

  static void Main(string[] args) { // ----------------------------------------------- // Pre .NET 4.5 or gcAllowVeryLargeObjects unset const int twoGig = 2147483591; // magic number from .NET var type = typeof(int); // type to use var size = Marshal.SizeOf(type); // type size var num = twoGig / size; // max element count var arr20 = Array.CreateInstance(type, num); var arr21 = new byte[num]; // ----------------------------------------------- // .NET 4.5 with x64 and gcAllowVeryLargeObjects set var arr451 = new byte[2147483591]; var arr452 = Array.CreateInstance(typeof(int), 2146435071); var arr453 = new byte[2146435071]; // another magic number return; } 

यहां आपके प्रश्न का उत्तर है जो विस्तार में आता है: http://www.velocityreviews.com/forums/t372598-maximum-size-of-byte-array.html

आप का उल्लेख करना चाहते हैं कि आपके द्वारा उपयोग किए जा रहे एनएटी के संस्करण और आपकी मेमोरी आकार।

आप अपने आवेदन के लिए, 2 जी में फंस जाएंगे, हालांकि सीमा, इसलिए यह आपकी सरणी में है पर निर्भर करता है।

चूंकि लंबाई एक पूर्णांक है I int कहना है। MaxValue

मुझे लगता है कि अगर आप वीएम पर विचार नहीं करते हैं, तो यह पूर्णांक है। मैक्सवैल्यू

मुझे लगता है कि यह आपकी रैम (या शायद वर्चुअल मेमरी) स्पेस से जुड़ा हुआ है और आपके ओएस वर्जन (जैसे 32 बिट या 64 बिट) के लिए पूर्ण प्रतिबन्धित अधिकतम