Zig Academy · पाठ

Allocator Interface

सभी memory sources के लिए एक contract।

पाठ 2, कुल 4 में से13 चरण

Allocator Interface, CoddyKit पर Zig Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Zig Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Zig Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

एक सामान्य प्रकार

Zig में हर allocator को एक ही प्रकार, std.mem.Allocator, के रूप में पास किया जाता है। आपका कोड इसी interface से बात करता है, किसी ठोस backend से नहीं।

const Allocator = std.mem.Allocator;

Class नहीं, interface

std.mem.Allocator एक छोटा interface है: एक pointer और functions की एक table। यह बताता है कि allocator क्या कर सकता है, यह नहीं कि आप किस allocator का उपयोग करते हैं।

कई backend, एक ही रूप

page allocator, arena या test allocator—सभी एक ही रूप प्रस्तुत करते हैं। एक को दूसरे से बदलने के लिए calling code में कोई बदलाव नहीं करना पड़ता।

वास्तविक allocator प्राप्त करें

आप एक ठोस allocator प्राप्त करते हैं, फिर उसका .allocator() handle लेकर उसे सामान्य std.mem.Allocator type के रूप में पास करते हैं।

var gpa = std.heap.GeneralPurposeAllocator(.{}){};
const a = gpa.allocator();

इसे आगे पास करें

एक बार allocator आपके पास आ जाए, तो जिस भी function को memory की आवश्यकता हो, उसमें वही value पास करें। पूरा program एक ही source साझा कर सकता है।

try doWork(a);

Page allocator

std.heap.page_allocator memory के लिए सीधे OS से अनुरोध करता है। यह सरल लेकिन मोटे स्तर का है, इसलिए छोटे blocks के बजाय बड़े या लंबे समय तक रहने वाले blocks के लिए उपयुक्त है।

const a = std.heap.page_allocator;

GeneralPurposeAllocator

GeneralPurposeAllocator debug builds में रोज़मर्रा की पसंद है। यह हर block को track करता है और आपके लिए leaks तथा double-frees की सूचना देता है।

Interface क्यों उपयोगी है

Interface के आधार पर coding करने का अर्थ है कि आपका function किसी भी allocator के साथ काम करेगा। यही code tests में, bare metal पर या server में चल सकता है।

Functions बस अनुरोध करते हैं

किसी function को परवाह नहीं होती कि उसे कौन-सा allocator मिला है। वह दिए गए std.mem.Allocator पर alloc और free जैसे methods को बस call करता है।

const buf = try a.alloc(u8, 16);

कोई global allocator नहीं

Zig में कोई एक global heap नहीं है। आप तय करते हैं कि आपके program का प्रत्येक भाग कौन-सा allocator उपयोग करेगा, जिससे memory sources स्पष्ट और स्थानीय रहते हैं।

दूसरे allocator से test करें

Tests में इसके बजाय std.testing.allocator पास करें। Code वही रहता है, लेकिन अब leaks के कारण test विफल हो जाता है, जिससे interface का लाभ सिद्ध होता है। ✅

त्वरित जाँच

सोचिए कि सभी Zig allocators में कौन-सा type समान होता है।

पुनरावलोकन

आपने सीखा कि std.mem.Allocator कई backends के ऊपर एक interface है, इसलिए memory माँगने वाला code आपके द्वारा दिए गए किसी भी allocator के साथ काम करता है। 🎯

शुरुआत निःशुल्क

एआई शिक्षक के साथ Zig सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
30
पाठ
120

अक्सर पूछे जाने वाले प्रश्न

क्या “Allocator Interface” पाठ निःशुल्क है?

हाँ—“Allocator Interface” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Zig Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Zig Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Allocator Interface” में मैं क्या सीखूँगा?

सभी memory sources के लिए एक contract। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Zig Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Zig Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Zig Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“Allocator Interface” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Zig Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Zig Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Zig में Hidden Allocations क्यों नहीं हैं
  2. Allocator Interface
  3. alloc, free, create, destroy
  4. ArrayList से Dynamic Lists
← Zig Academy पर वापस जाएँ