একটি স্মৃতি গাদা কি?


উত্তর:


234

সম্ভবত আপনি মেমরি বরাদ্দকরণ দৃষ্টিকোণ থেকে গাদা অর্থ , কোনও কাঠামোর দৃষ্টিকোণ থেকে নয় (শব্দটির একাধিক অর্থ রয়েছে)।

খুব সহজ ব্যাখ্যা হ'ল গাদা মেমরির সেই অংশ যেখানে গতিশীলভাবে বরাদ্দ হওয়া মেমরি থাকে (যেমন মেমরির মাধ্যমে বরাদ্দ malloc)। গাদা থেকে বরাদ্দ হওয়া মেমরিটি নিম্নলিখিতগুলির মধ্যে একটি না হওয়া পর্যন্ত বরাদ্দ থাকবে:

  1. স্মৃতি free'ডি
  2. প্রোগ্রামটি শেষ হয়

যদি বরাদ্দ মেমরির সমস্ত উল্লেখ হারিয়ে যায় (যেমন আপনি এটিতে কোনও পয়েন্টার সংরক্ষণ করেন না), আপনার কাছে যা মেমরি ফাঁস বলে । এখান থেকে এখনও স্মৃতি বরাদ্দ করা হয়েছে তবে এটিকে অ্যাক্সেস করার কোনও সহজ উপায় আপনার কাছে নেই। ফাঁস মেমরিটি ভবিষ্যতের মেমরি বরাদ্দের জন্য পুনরায় দাবি করা যায় না, তবে প্রোগ্রামটি শেষ হয়ে গেলে অপারেটিং সিস্টেমের মাধ্যমে মেমরিটি ফ্রিড হয়ে যাবে।

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

আপনি এই নিবন্ধে গাদা সম্পর্কে আরও তথ্য পেতে পারেন ।


3
স্থানীয় ভেরিয়েবলগুলি কীভাবে একটি স্ট্যাকের মধ্যে থাকতে পারে? একটি স্ট্যাক কেবল একটি নির্দিষ্ট নির্দিষ্ট ক্রমে একবারে একটি পরিবর্তনশীল নিতে দেয় to আমার যদি স্ট্যাকের নীচে কোথাও থেকে স্থানীয় ভেরিয়েবলের প্রয়োজন হয়?
কোডি বাগস্টাইন 21

9
@ ইম্রে - একটি স্ট্যাটিকালি টাইপ করা ভাষায়, স্থানীয় পরামিতিগুলির আকারগুলি সংকলন সময়ে জানা যায়। সুতরাং স্থানীয় ভেরিয়েবলগুলি স্ট্যাক থেকে সরাসরি কোনও অফসেটের মাধ্যমে সরাসরি অ্যাক্সেস করা যায়। এটি করার জন্য স্ট্যাকটি পপ করার দরকার নেই। আরও তথ্যের জন্য এই উত্তর দেখুন ।
চিতাবাঘ স্কিনপিলবক্সহ্যাট

17

একটি মেমরি হিপ মেমরির এমন একটি অবস্থান যেখানে মেমোরি এলোমেলো অ্যাক্সেসে বরাদ্দ হতে পারে। স্ট্যাকের
বিপরীতে যেখানে মেমরি বরাদ্দ করা হয় এবং খুব সংজ্ঞায়িত ক্রমে প্রকাশ করা হয়, গাদাগুলিতে বরাদ্দকৃত পৃথক ডেটা উপাদানগুলি সাধারণত এমনভাবে প্রকাশ করা হয় যা একে অপরের থেকে অ্যাসিনক্রোনাস। প্রোগ্রামটি সুস্পষ্টভাবে সম্পর্কিত পয়েন্টারটি প্রকাশ করলে এই জাতীয় ডেটা উপাদানকে মুক্ত করা হয় এবং এর ফলে খণ্ডিত apগল হতে পারে। বিরোধীদের মধ্যে কেবল শীর্ষে থাকা ডেটা (বা নীচে, স্ট্যাকটি যেভাবে কাজ করে তার উপর নির্ভর করে) প্রকাশিত হতে পারে, ফলস্বরূপ ডেটা উপাদানগুলি বরাদ্দকৃত বিপরীত ক্রমে মুক্ত করা যেতে পারে।


9

গাদা হ'ল এমন একটি অঞ্চল যেখানে কোনও অর্ডার ছাড়াই মেমরি বরাদ্দ করা হয় বা বিলোপযুক্ত। newঅপারেটর বা অনুরূপ কিছু ব্যবহার করে যখন কোনও বস্তু তৈরি করা হয় তখন এটি ঘটে । এটি স্ট্যাকের বিরোধী যেখানে মেমোরিটি সর্বশেষ আউট ভিত্তিতে প্রথম স্থির করা হয়।


8

মেমরি হিপ গতিশীল বরাদ্দ মেমরি ধরে রাখার জন্য একটি সাধারণ কাঠামো। উইকিপিডিয়ায় ডায়নামিক_মেমরি_লোকেশন দেখুন ।

পুল, স্ট্যাক এবং পাইলসের মতো অন্যান্য কাঠামো রয়েছে।


7

এটি কোনও প্রক্রিয়া দ্বারা ব্যবহৃত মেমরি পরিচালক দ্বারা অপারেটিং সিস্টেম থেকে বরাদ্দ করা মেমরির একটি অংশ। malloc()এট আলিয়ায় কল করার পরে সরাসরি অপারেটিং সিস্টেমের সাথে ডিল করার পরিবর্তে এই গাদা থেকে মেমরি নেওয়া।


7

আপনি সম্ভবত হিপ মেমরি অর্থ মেমরি হিপ নয়।

হিপ মেমরি মূলত মেমরির একটি বৃহত পুল (সাধারণত প্রক্রিয়া অনুসারে) যা থেকে চলমান প্রোগ্রামটি অংশগুলির জন্য অনুরোধ করতে পারে। একে সাধারণত গতিশীল বরাদ্দ বলা হয় ।

এটি স্ট্যাকের থেকে পৃথক, যেখানে "স্বয়ংক্রিয় ভেরিয়েবল" বরাদ্দ করা হয়। সুতরাং, উদাহরণস্বরূপ, আপনি যখন একটি সি ফাংশনে একটি পয়েন্টার ভেরিয়েবল সংজ্ঞায়িত করেন, মেমরি ঠিকানা রাখার জন্য পর্যাপ্ত স্থানটি স্ট্যাকের জন্য বরাদ্দ করা হয়। তবে আপনাকে প্রায়শই গাদা হয়ে গতিতে স্থান বরাদ্দ করতে হবে (মেলোক সহ) এবং তারপরে ঠিকানাটি সরবরাহ করতে হবে যেখানে এই মেমরির অংশটি পয়েন্টারে শুরু হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.