আপনার অধ্যাপকরা একটি গুরুত্বপূর্ণ বিষয় উত্থাপন করছেন। দুর্ভাগ্যক্রমে ইংরেজি ব্যবহার এমন যে তারা কী বলেছে তা আমি নিশ্চিত নই। আমাকে খেলনাবিহীন প্রোগ্রামগুলির শর্তে এই প্রশ্নের উত্তর দিন যাতে নির্দিষ্ট মেমরির ব্যবহারের বৈশিষ্ট্য রয়েছে এবং আমি ব্যক্তিগতভাবে কাজ করেছি।
কিছু প্রোগ্রাম সুন্দর আচরণ করে। তারা তরঙ্গগুলিতে মেমরি বরাদ্দ করে: পুনরাবৃত্তি চক্রগুলিতে প্রচুর পরিমাণে ছোট বা মাঝারি আকারের বরাদ্দ followed এই প্রোগ্রামগুলিতে সাধারণত মেমরির বরাদ্দকারীরা ভাল করে। তারা মুক্ত ব্লকগুলি একত্রিত করে এবং একটি তরঙ্গ শেষে মুক্ত মেমরির বেশিরভাগ অংশ বৃহত সংকীর্ণ অংশে থাকে। এই প্রোগ্রামগুলি বেশ বিরল।
বেশিরভাগ প্রোগ্রাম খারাপ আচরণ করে। এগুলি মেমরিকে কম বা এলোমেলোভাবে কম বা এলোমেলোভাবে বরাদ্দ করে এবং খুব ছোট থেকে খুব বড় আকারের বিভিন্ন আকারে এবং তারা বরাদ্দকৃত ব্লকগুলির উচ্চ ব্যবহার ধরে রাখে। এই প্রোগ্রামগুলিতে ব্লকগুলি একত্রিত করার ক্ষমতা সীমাবদ্ধ এবং সময়ের সাথে সাথে তারা স্মৃতিটি অত্যন্ত খণ্ডিত এবং তুলনামূলকভাবে স্বতঃস্ফূর্তভাবে সমাপ্ত করে। যদি 32-বিট মেমরির স্থানে মোট মেমরির ব্যবহার 1.5 জিবি ছাড়িয়ে যায় এবং 10 এমবি বা তার বেশি বরাদ্দ থাকে তবে অবশেষে বৃহত বরাদ্দগুলির মধ্যে একটি ব্যর্থ হবে। এই প্রোগ্রামগুলি সাধারণ।
অন্যান্য প্রোগ্রামগুলি বন্ধ না হওয়া পর্যন্ত অল্প বা মেমরি মুক্ত করে। তারা ক্রমান্বয়ে চলতে চলতে স্মৃতি বরাদ্দ করে, কেবলমাত্র অল্প পরিমাণে মুক্ত করে এবং তারপরে থামায়, সেই সময়ে সমস্ত স্মৃতি মুক্ত হয়। একটি সংকলক এরকম। সুতরাং একটি ভিএম হয়। উদাহরণস্বরূপ,। নেট সিএলআর রানটাইম, নিজেই সি ++ তে লিখিত, সম্ভবত কখনও কোনও স্মৃতি মুক্ত করে না। এটা কেন করা উচিত?
এবং এটি চূড়ান্ত উত্তর। সেই ক্ষেত্রে যেখানে প্রোগ্রামটি মেমরির ব্যবহারে যথেষ্ট পরিমাণে ভারী, তারপরে ম্যালোক এবং ফ্রি ব্যবহার করে মেমরি পরিচালনা করা সমস্যার যথেষ্ট উত্তর নয়। আপনি যদি ভাল আচরণের প্রোগ্রামের সাথে ভাগ্যবান হওয়ার পক্ষে যথেষ্ট ভাগ্যবান না হন তবে আপনাকে এক বা একাধিক কাস্টম মেমরি বরাদ্দকারী ডিজাইন করতে হবে যা মেমরির বড় অংশগুলিকে প্রাক বরাদ্দ করে এবং তারপরে আপনার পছন্দের কৌশল অনুসারে সাব-বরাদ্দ করতে হবে। প্রোগ্রামটি বন্ধ হয়ে যাওয়া ব্যতীত আপনি মোটেও বিনামূল্যে ব্যবহার করতে পারবেন না।
আপনার অধ্যাপকরা ঠিক কী বলেছেন তা না জেনে, সত্যিকারের উত্পাদন স্কেল প্রোগ্রামগুলির জন্য আমি সম্ভবত তাদের পক্ষে বেরিয়ে আসব।
সম্পাদনা
আমি কিছু সমালোচনার উত্তর দিতে যাব। স্পষ্টতই এসও এই ধরণের পোস্টগুলির জন্য ভাল জায়গা নয়। কেবল স্পষ্ট করে বলার জন্য: আমার কাছে প্রায় 30 বছর অভিজ্ঞতা রয়েছে কয়েক ধরণের সংকলক সহ এই ধরণের সফ্টওয়্যার লেখার। আমার কোনও একাডেমিক রেফারেন্স নেই, কেবল আমার নিজস্ব আঘাত। আমি স্বল্পতর এবং স্বল্প অভিজ্ঞতার লোকদের কাছ থেকে সমালোচনাগুলি অনুভব করতে সাহায্য করতে পারি না।
আমি আমার মূল বার্তাটি পুনরাবৃত্তি করব: ম্যালোক এবং বিনামূল্যে ব্যালেন্স করা বাস্তব প্রোগ্রামগুলিতে বড় মাপের মেমরির বরাদ্দের পর্যাপ্ত সমাধান নয় । ব্লক কোয়েলসিং স্বাভাবিক, এবং সময় ক্রয় করে, তবে এটি পর্যাপ্ত নয় । আপনার গুরুতর, চতুর মেমরি বরাদ্দকারী প্রয়োজন, যা খণ্ডগুলিতে স্মৃতি দখল করে (ম্যালোক বা যা কিছু ব্যবহার করে) এবং খুব কমই বিনামূল্যে free এটি সম্ভবত ওপি-র অধ্যাপকদের ম্যাসেজটি ছিল, যা তিনি ভুল বুঝেছিলেন।