একটি "মেমরি স্টম্প" কী?


96

আমি এই ব্লগ পোস্টটি জুড়ে এসেছি যেখানে "স্টমপিং মেমোরি" উল্লেখ রয়েছে:

একটি সি ++ প্রোগ্রাম যা মেমোরি স্টমপিংয়ে সহজেই সক্ষম (এমন একটি জিনিস যা আপনি সম্ভবত পরিচালনা করেনি যদি আপনি কোনও কোডড কোড ওয়ার্ল্ডে জন্মেছিলেন তবে কখনও শুনে নি))

এবং বাস্তবে আমি এর আগে কখনও শুনিনি!

সুতরাং, এটি কি, একটি মেমরি স্টম্প, স্টোমিং মেমরি? কখন হয়?


4
মেমরি স্টম্পের একটি ভাল উদাহরণ হ'ল এই প্রশ্নটি: stackoverflow.com/questions/31016660/…
ফিলিপ নাগান

উত্তর:


118

মেমোরিটি "স্টমপড" হয় যখন কোডের একটি অংশটি বুঝতে না পেরে মেমরিকে হস্তান্তরিত করে যে কোনও কোডের অন্য টুকরা সেই স্মৃতিটিকে এমনভাবে ব্যবহার করছে যাতে দ্বন্দ্ব হয়। মেমরি স্টম্প করা যেতে পারে বিভিন্ন সাধারণ উপায়।

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

অন্যটি মেমোরিটি মুক্ত হওয়ার পরে অ্যাক্সেস করছে। মেমরিটি অন্য কোনও অবজেক্টের জন্য বরাদ্দ হতে পারে। আবার, কোডটি যা সমস্যাটি দেখায় তা সদ্য বরাদ্দ হওয়া অবজেক্টের সাথে সম্পর্কিত হতে পারে যা একই ঠিকানা পেয়েছিল এবং কোডটির সাথে সম্পর্কিত নয় যা সমস্যা তৈরি করেছিল।


4
মেমোরি স্টমপিংয়ের চমৎকার উদাহরণ এখানে
patryk.beza

34

খুব প্রায়ই এটি একটি বাফারকে ছাড়িয়ে যায়; উদাহরণ হিসাবে, এই কোড:

char buffer[8];
buffer[8] = 'a';

যাই হোক না কেন পরে স্মৃতিতে পরবর্তী জিনিস মধ্যে হতে হবে এ "stomp" will buffer। সাধারণভাবে বলতে গেলে, 'স্টমপিং' হ'ল স্মৃতি যখন অনিচ্ছাকৃতভাবে লেখা হয়।


9

অন্যান্য উত্তরগুলি মূলত সঠিক, তবে আমি একটি উদাহরণ দিতে চাই।

int a[10], i;       
for (i = 0; i < 11 ; i++)
    a[i] = 0;

int i, a[10];     
for (i = 0; i < 11 ; i++)
    a[i] = 0;

এই নমুনাগুলি অসীম লুপে নেতৃত্ব দিতে পারে (বা নেতৃত্ব দিতে পারে না) কারণ এটি অনির্ধারিত আচরণ।

iমেমরিতে খুব সম্ভবত পরিবর্তনশীল অ্যারের ঠিক পরে সঞ্চয় করা হয়। সুতরাং অ্যাক্সেস করা a[10]আসলে iঅন্য কথায় অ্যাক্সেস করতে পারে এটি লুপ কাউন্টারটিকে পুনরায় সেট করতে পারে।

আমি মনে করি এটি একটি ভাল উদাহরণ যা স্মৃতি "স্টমপিং" প্রদর্শন করে।


4
বিভিন্ন অপারেটিং সিস্টেমে একই ধরণের উদাহরণটি নিয়ে আলোচনা করা হচ্ছে এথার থ্রেড ... স্ট্যাকওভারফ্লো
খ্রিস্টান

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