با سلام و خسته نباشید خدمت دوستان عزیز ؛
در صورت کمبود فضای مورد نیاز برای تعریف آرایه 3بعدی با ابعاد 1000*1000*1000 از نوع int بر روی RAM ، چه راه حلی پیشنهاد می دهید؟ ( زبان = #C )
با سلام و خسته نباشید خدمت دوستان عزیز ؛
در صورت کمبود فضای مورد نیاز برای تعریف آرایه 3بعدی با ابعاد 1000*1000*1000 از نوع int بر روی RAM ، چه راه حلی پیشنهاد می دهید؟ ( زبان = #C )
منتظر پاسخ دوستان . . .
چه اطلاعاتی داخل آرایه دارید؟
دوستان کسی هست راهنمایی کنه در این مورد یا اگر مقاله ای در مورد مدیریت منابع داره اینجا بذاره؟ اگر در مورد سی پلاس پلاس هم باشه که بهتر با تشکر
بلی، اون رو که تو پست اول گفتین! منظور اینه که چه خبره آرایه سه بعدی 1000*1000*1000؟ معمولاً گرفتن اینهمه فضا (32 بیت ضربدر 9^10 میشه 4 گیگ فضا!!!) نشون میده که شما راه درستی انتخاب نکردین! اطلاعات نجومی هم بخواین ذخیره کنید میشه با راه های بهینه تری مثل لیست های جنریک یا مثلاً آرایه ای از کلاس ها و Dictionary و ... خیلی بهتر به نتیجه رسید؛ پس سوال شما باید با این سوال پاسخ داده بشه که برای چه کاری این آرایه سه بعدی عظیم رو لازم دارین، اونهم با مقادیر مشخص اولیه برای ایندکس؟
سلام
به فرض اینکه استفاده از همچین آرایه ای منطقی باشه مگه شما در این زمینه به مشکلی برخوردید؟
به نظر شما همه متغیر هایی که در برنامه تعریف میشن از حافظه ram استفاده میکنند؟(اینو خودمم نمیدونم.)
ولی تا جایی که میدونم برنامه های سنگین مثل برنامه های گرافیکی موقعی که حجم زیادی از حافظه رو نیاز دارن فضایی روی hard به خودشون اختصاص میدن که اگه اشتباه نکنم virtual memory paging file نام داره و قابل گسترش هم از طریق خود windows (اگه در تنظیم ها فعال باشه) و هم از طریق کاربر هست.
اینکه آیا این گفته بنده جواب سوال شما باشه یا خیر اساتید میدونند.
اولاً به احتمال زیاد این دوستمون همینطوری یه سوالی به ذهنش رسیده مطرح کرده، ولی در کاربردهای واقعی اصلاً مهم نیست که سیستم عامل چه جوری این فضا رو برای برنامه ها تامین میکنه؛ در 99.9999% موارد، رویکردی که باعث بوجود اومدن چنین نیاز عظیمی برای یک متغیر میشه معمولاً غلط هست و باید توش تجدیدنظر بشه. (حتی اگه قرار باشه ارقام اختلاس هم نگهداری کنید :دی)
از طرف دیگه از وقتی دات نت بوجود اومد! شما یک محدودیت 2GiB (اسمی) برای هر آبجکت منفرد داشتین و این قصیه تا الان که CLR 4.0 اومده پابرجا هست، فرقی هم نمیکنه که برنامه 32 بیتی باشه یا 64 بیت و ...، ولی واقعیت اینه که فضایی که CLR حتی برای لیستهای جنریک و ... محدود میکنه معمولاً کمتر از این مقدار اسمی هم هست و چون کدها Managed هستند، مدیریت منابع CLR، مانع انجام این کار توسط شما میشه. این مقدار تجربی یه چیزی بین 1.2 گیگ الی 1.4 گیگ هست (استثناء) ...
چون دیگه بقیه اش خیلی وارد مباحث تئوری میشه و الکی برای شما سردرد میاره، ادامه نمیدم! برای اطلاعات بیشتر می تونید به لینک هایی که تو پست دوم به بعد موضوع پایین اومده دقت کنید:
? Single objects still limited to 2 GB in size in CLR 4.0