+2 امتیاز
قبل در برنامه نویسی توسط (760 امتیاز)
ویرایش شده قبل توسط
عزیزان رم کامپیوتر 1 گیگ است

اینتیجر هم 2 بایتی است

و برای ایجاد یک آرایه 9 میلیونی، 18 میلیون بایت یک رمی در حدود 17-18 مگابایت باید داشته باشیم که ظاهرا نشدنیه!

از کسی پرسیدم که گفت باید از طریق لیست پیوندی این کار انجام بشه

در این زمینه من صفرم!  چطور باید این کار رو انجام بدم؟

1 پاسخ

+1 امتیاز
قبل توسط (484 امتیاز)
ویرایش شده قبل توسط

سلام، منم متاسفانه با این جور مسائل آشنایی مناسبی ندارم. چیزایی که به فکرم رسیده رو خدمت شما، می گم.

حداکثر سایز آرایه ی مورد نظر شما، بستگی به حافظه ی در دسترس برنامه ی شما داره. می دونیم که تو سیستمای 32 بیتی، 32^2 بایت، یعنی 4 گیگابایت فضا داریم که می تونیم با اشاره گر بهش آدرس دهی کنیم.به هر جهت، با توجه به این که سایز آرایه ی مورد نظر خیلی زیاده، می تونید از اشاره گر کمک بگیرید.

به این صورت که با زبان سی پلاس پلاس:

  1. اون آرایه رو ابتدا تحت عنوان یه اشاره گر تعریف کنید.
  2. بعد یه فضایی از حافظه رو، به کمک عملگر new بهش اختصاص بدید.
  3. در نهایت همون فضای حافظه رو، با عملگر delete تخلیه کنید.

این میشه منطق برنامه ی شما؛ نحوه ی پیاده سازیش هم، سادهس. در حقیقت به جایی که حافظه رو فیکس ببندیم، اونو به صورت پویا پایه ریزی می کنیم:

#include<iostream>
int main(){
int* d = NULL;   
int m=9000000;          
d = new int[m]; 
for (int i=0; i<m; i++) {
    d[i] = 0;   
}
std::cout << d;
delete [] d; 
d = NULL;     
}

 

قبل توسط (760 امتیاز)
مسله پیاده سازی این برنامه است
خواستم بگذارم توی سایت ..نیشا یا ..رس کدر. اما واقعاً نمیدونم با چه عنوانی بگذارم!
قبل توسط (484 امتیاز)
توضیحات لازم اضافه شد.

سوالات مشابه

+1 امتیاز
1 پاسخ 438 بازدید
0 امتیاز
0 پاسخ 212 بازدید
0 امتیاز
0 پاسخ 366 بازدید
0 امتیاز
1 پاسخ 285 بازدید
+1 امتیاز
1 پاسخ 503 بازدید
0 امتیاز
1 پاسخ 446 بازدید
+1 امتیاز
1 پاسخ 1.6هزار بازدید
+1 امتیاز
1 پاسخ 313 بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...