প্রোগ্রামটি শেষ হওয়ার সাথে সাথে উবুন্টু স্বয়ংক্রিয়ভাবে কোনও সি প্রোগ্রাম দ্বারা বরাদ্দকৃত মেমরি প্রকাশ করে?


11

আমি malloc()ফাংশনটি ব্যবহার করে কোড বরাদ্দকারী একটি সি প্রোগ্রাম লিখেছি । আমি যদি free()ফাংশনটি ব্যবহার করে মেমরিটি মুক্ত না করি তবে উবুন্টু এটি স্বয়ংক্রিয়ভাবে প্রকাশ করবে?


এটির কার্নেলের দায়িত্ব উবুন্টুর সাথে কোনও সম্পর্ক নেই।
ব্যবহারকারী

@ ব্যবহারকারীর: উবুন্টুর একটি নির্দিষ্ট সংস্করণ অবশ্যই লিনাক্স কার্নেলের সংস্করণগুলির একটির উপরে চলতে হবে। সুতরাং এটি উবুন্টুর সাথে কিছু করার জন্য যাতে এটি চালাচ্ছে যে কার্নেলটি মেমরিটি স্বয়ংক্রিয়ভাবে মুক্তি দেয় কিনা তা জানতে।
আশুবুন্টু

উত্তর:


16

হ্যাঁ.

কার্নেল প্রোগ্রামের সমাপ্তির পরে কোনও প্রোগ্রাম দ্বারা বরাদ্দকৃত সমস্ত সংস্থান প্রকাশ করবে।

এটি করা হয়েছে do_exit()ফাংশনটি নির্ধারণের পরে এর কার্য kernel/exit.cসম্পাদন স্থগিত করার পরে; do_exit()ফাংশন সঞ্চালনের নিজেই ঘটনা একটি নম্বর দ্বারা আলোড়ন সৃষ্টি হতে পারে, সবচেয়ে বেশি যে একটি সুনির্দিষ্ট দ্বারা exit()প্রাপ্ত syscall তার নিয়মিত গণনার সময় অথবা একটি অন্তর্নিহিত করে প্রোগ্রাম ডাকা exit()তার পরিসমাপ্তি উপর প্রোগ্রাম ডাকা প্রাপ্ত syscall (সি কম্পাইলার একটি স্থান হিসাবে exit()পর প্রাপ্ত syscall main()'র আসতে)। অন্যান্য কারণগুলির মধ্যে অহেতুক / অজ্ঞাত সংকেত বা ব্যতিক্রম অভ্যর্থনা অন্তর্ভুক্ত।

do_exit()ফাংশন নিজেই কাজগুলো একটি সংখ্যা সম্পাদন করে। এটি কার্যকর করা বন্ধ করার পরে, প্রোগ্রামটির বরাদ্দ হওয়া সংস্থানগুলি কার্নেল দ্বারা প্রকাশ করা হয় এবং আরও ব্যবহারের জন্য সিস্টেমে ফিরে আসে।

উৎস


7
তবে এটি অবশ্যই বিনামূল্যে () ভুলে যাওয়ার "জন্য কোনও অজুহাত নয় ...
হ্যাগেন ভন ইটজেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.