আমরা কোন বড় সাইজের array যেমন

A[2000][2000]

কোন function এর মধ্যে locally declare করতে পারি না। কিন্তু একই array globally declare করলে কোন কোন সমস্যা হয় না। এর কারন কি?

asked 27 Jan '15, 22:09

corei11's gravatar image

corei11
418113

edited 27 Jan '15, 22:10


এর কারণ হল, যখন কোনো ফাংশন কল করা হয়, সেটার সবকিছু (কোড, ডাটা) স্ট্যাকে (stack) থাকে। প্রত্যেকটা ফাংশন কল স্ট্যাকে একটার উপর একটা জমা হয়, আর ফাংশন যখন রিটার্ন করে তখন সেটা স্ট্যাক থেকে চলে যায়। স্ট্যাকে জায়গা থাকে সীমিত, তাই সেখানে বড় মেমরি নেওয়া যায় না।

গ্লোবাল ভ্যারিয়েবল কোনো ফাংশনের ভিতরে ডিক্লেয়ার করা হয় না, তাই সেটা স্ট্যাক থেকে জায়গা নেয় না। এই ভ্যারিয়েবলগুলো থাকে মেমরির হিপ (heap) নামক জায়গাতে, সেখানে জায়গা তুলনামূলকভাবে বেশি।

উল্লেখ্য যে এখানে স্ট্যাক ও হিপ কম্পিউটারের মেমোরির দুটি অংশ।

permanent link

answered 28 Jan '15, 03:30

0605002's gravatar image

0605002
4907

reverted 28 Jan '15, 04:18

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×402
×214
×131
×56

question asked: 27 Jan '15, 22:09

question was seen: 1,396 times

last updated: 28 Jan '15, 04:18