 بسم اللہ الرحمن الرحیم، آج ہم موڈیول سکسٹی ایٹ دسکس کریں گے موڈیول سکسٹی ایٹ ہے یعنی ہیپس اس کے اندر ہم دسکس کریں گے کہ ہم ہیپس سے ایسوسیتر ہم نے کے ایپی ایس جو پریبسلی دسکس کیا ہے ان کو ہم کیسے use کسکتے ہیں کوئی اپنے پکرام کے اندر ہیپس کو use کرنے کے لئے تو بڑا اس کا ایک سمپل سا میکنزم ہے اس سمپل میکنزم کو ہم دسکس کرتے ہیں اس سے پہلے ہم نے مختلف ایپی ایس دسکس کیا ہے جس کے اندر کچھ ایپی ایس تھیں جو کہ ہیپ کو create کرنے کے لئے use ہوتی ہیں جو ہیپ کو create کرنے کے لئے API use ہوتی ہیں وہ آپ کو ایک ہیپ کا handle return کرتے ہیں ہیپ کو آپ وہ نہ سمجھیں کہ یہ ایک پکرام کا سیکشن ہے یہ ہیپ جو ہے یہ ایک object ہے windows کا object ہے یہ windows operating system کیلئے ایک object ہے اور windows کے بارے میں ہم نے شروع وال الیکچس میں دسکس کیا تھا کہ windows ہار چیز کو as an object treat کرتے ہیں تو ہیپ جو ہے وہ بھی windows کیلئے ایک object ہے تو create کرنے سے ایک object create ہوا اور اس object کا آپ کے پاس handle آگیا اب آپ اس handle کے through جو بھی آپ نے operations perform کرنے اس handle کے through وہ سارے operations perform کرنے وہ operations کیا ہوسکتے ہیں allocations ہوسکتی ہیں reallocations ہوسکتی ہیں deallocations ہوسکتی ہیں کہ آپ نے for example ایک array کیلئے memory allocate کیا پھر آپ کو پتہ چلا کہ array کیلئے مزید آپ کو کچھ bytes رکواید ہیں تو اسی کے لئے آپ نے then reallocation کی size اور increase ہو گیا پھر اگر for example کوئے dynamic data structure link list ہے یا trees ہیں ان کے لئے آپ نے dynamically allocation کیا اور اس کی nodes بنائی اگر اس میں سے deletion یا removal یا modification جو بھی آپ operations perform کرتے ہیں اس کے لئے ہوسکتا ہے کچھ nodes کو آپ کو deallocate بھی کرنا پڑے remove بھی کرنا پڑے تو اس کے لئے بھی آپ کے پاس API اس موجود ہیں تو یہ سارہ کام آپ کرتے رہے ہیب کے اندر آپ نے اپنا data structure بنائے in the end جب program terminate ہونے لگا تو آپ نے ہیب کی اندر جیے جو سارے data structure بنے یہ سارہ جو data آپ نے allocate کیا ہے اس کو آپ نے deallocate کرنا آپ کو ہیب کا size گیٹ کرنے کی بھی کبھی ضرورت پڑھ سکتی ہے تو اس کے لئے بھی various آپ کے پاس API اس available ہیں ان کو بھی ہم use کریں گے جب آپ نے یہ سارہ کچھ کر لیا پھر اس کے بعد آپ نے ہیب کے اندر جسی memory allocate ہی ہے اس کو deallocate کرنا ہے اور اس کا ہیب کا handle ہے اس handle کو بھی آپ نے in the end destroy کر دیلے اب اس کو دیکھتے ہیں detail سے کہ یہ کیسے operation perform ہوگا ایک typical program جو کہ ہیب کو use کر رہا ہے وہ کیا methodology استعمال کرتا first way وہ ایک handle create کرتا handle کیسے create کرتا اس کے لئے آپ کے پاس ہیب create کی API ہے یا get process ہیب کی API ہے اس API کو use کر کے آپ ایک heap کا handle create کرتے یہ آپ windows کے پاس ایک object آگیا اب آپ نے اس کے لئے memory allocate کرنے جہاں کہیں آپ کو memory allocation کی ضرورت پڑھتی آپ heap alloc کا function use کرتے ہیں اس کے مدل سے آپ ایک specific amount of memory allocate کرتے ہیں اور کہیں آپ کو ہوسکتا reallocation کی ضرورت پڑھے depending upon your program logic ہوسکتا نہ ضرورت پڑھیں کئی دفعہ آپ کو allocation کی ضرورت پڑھیں پھر ہوسکتا ہے کئی دفعہ آپ کو کچھ memory ڈا سے deallocate بھی کرنے پڑھیں deallocate کرنے کے لیے heap free کا function use کریں گے اور اس طرح allocation اور deallocation کرتے جائیں گے اور ultimately آپ کا program end ہونے والا ہوگا تو آپ نے heap کو dispose off کرنا یہاں پہ جو strength ہے windows کی وہ یہ ہے کہ آپ کو ہر blog پہ جاکے ہر address پہ جاکے جو allocation ہی تھی وہ deallocate نہیں کرنے آپ ایک ایک go کے اندر پوری کے پوری heap جو ہے اس کو deallocate کر سکتے ہیں وہ کیسے کر سکتے ہیں heap destroy کا آپ کے پاس heap یہ مجود ہے اس کی مدد سے آپ پوری کے پوری heap کو جو ہے ایک وقت کے اندر memory جو اس کے نے reserve کی بھی ہے وہ deallocate کروائی جا سکتے ہیں پوری کے پوری جو heap ہے وہ dispose off ہو جائے گی پھر اس کے بعد once heap destroy ہو جاتی ہے تو پھر آپ ہوسکتا ہے اگر آپ کو آگے کئی program کے اندر ضرورت پڑھے تو آپ پھر مزید اور بھی کو heap کریٹ کر سکتے ہیں اور اسی process کے طرف allocation deallocation اور ultimately heap کو destroy کرنا چاہیں گے آپ اس میں ایک اور چیز کی یاد رکھنے کی آپ کو ضرورت ہے کیونکہ پریویسلی جتنی بھی programming آپ نے کی ہوگی اس کے اندر آپ نے see کے اندر آپ نے good dynamic allocation کیا ہے پہلے تو see کے run time library functions آپ نے use کیوں گے تو یہ یاد رکھیں کہ دونوں کو mix up نکارنا mix up کریں گے تو ہوسکتا ہے کوئی unexpected کسم کے آپ کے پاس results آئے اگر تو آپ کو لگتا ہے کہ آپ جو کرنا چاہ رہے ہیں وہ see کے run time library سے ہی کر سکتے ہیں تو آپ see کی run time library ہی use کریں لیکن آپ سمجھتے ہیں کچھ ایسا آپ نے کرنا ہے جو windows کے جو features ہیں ان کو بھی آپ نے ساتھ ساتھ use کرنا ہے تو پھر آپ صرف windows کے API اس کے ساتھ ٹکھ کریں بیچ میں آپ see کی run time libraries کو بالکل استمال نہ کریں اگر وہ mix up کریں گے تو اس کے وجہ سے کچھ conflict سا سکتے ہیں results جو ہے وہ گرینٹڈ نہیں ہے کیسے ہی آئے اگر آپ see کی library سے کوئی چیز allocate کریں تو اس کو deallocate بھی see کی library سے ہی کریں اگر آپ windows کی API کی مدس سے کوئی چیز allocate کریں تو اس کو deallocate بھی آپ نے windows کی API کی مدس سے ہی کرتا ہے