PDA

View Full Version : سوال: تعریف آرایه های بزرگ



mahdi bg
جمعه 17 خرداد 1387, 14:18 عصر
سلام
چطوری میشه توی C++.net آرایه ای مثل این تعریف کرد پیغام خطا میشده



float t[1000][1000]


ممنون

pars.engineer
جمعه 17 خرداد 1387, 16:02 عصر
احتمالا دليلش اين است كه چون حجم زيادي از حافظه را اشغال خواهد كرد(چيزي حدود 6 مگا بايت) سيستم عامل اين مقدار حافظه را در اختيار كامپايلر قرار نمي دهد.(البته احتمالا)
شما مي تونيد به جاي اينكه از آرايه static استفاده كنيد، از آرايه ي dynamic استفاده كنيد.
مثلا براي آرايه شما داريم:



float *t;
t=(float*)malloc(sizeof(float)*1000000);

mahdi bg
جمعه 17 خرداد 1387, 16:39 عصر
سلام
در این حالت چطوری باید به عناصر آرایه دسترسی داشته باشیم؟

دسترسی به صورت شماره سطر و شماره ستون.
ممنون

pars.engineer
جمعه 17 خرداد 1387, 18:08 عصر
چند تا راه داريم،
يكيش اينه كه فرض كنيد يك آرايه خطي به طول 1000000 عنصر داريم و هر 1000 عنصر را شما يك سطر در نظر بگيريد.
مثلا:



t[0][0]= *(t+0)
t[0][185]= * (t+185)
t[1][0]= *(t+1000)
t[5][12]= *(t+5012)



اميدوارم متوجه شده باشيد.(يك راه ساده تر هم است كه من سينتكس آن را فراموش كرده ام )
موفق باشيد.

A.S.Roma
جمعه 17 خرداد 1387, 19:32 عصر
سلام

علاوه بر روش بالا اینجوری هم میشه :


char **p;
p = ( char *)malloc(1000*sizeof(char *));
for(int i=0;i<1000;i++)
p[i] = (char)malloc(1000*sizeof(char));


که اینجوری میتونی از حافظه بهینه تر استفاده کنی و در دستور malloc دوم مقدار حافظه مورد نیازتون رو بنویسید.

Nima_NF
شنبه 18 خرداد 1387, 00:29 صبح
علت اندازه پیش فرض کم stack کامپایلر هست، قبلا در این لینک موضوع را توضیح دادم. (http://barnamenevis.org/forum/showthread.php?p=500459)

روش هایی هم که دوستان گفتند کاملا درست هست.