পিআইসিতে ম্যালোকের ব্যবহার


10

আমি কীভাবে পিআইসিতে ব্যবহার করতে পারি malloc()এবং কীভাবে কাজ করতে পারি free()? আমি শিরোনামটি দেখেছি এবং stdlib.hসেগুলির কোনও উল্লেখ নেই। আমি এমসিসি 18 ব্যবহার করছি।

কেউ কি তাদের ব্যবহার করতে হয়েছিল?

আমার সেগুলি দরকার কারণ আমি উইন্ডোজ এক্সপি থেকে পিআইসির কাছে একটি লাইব্রেরি পোর্ট করছি। পোর্টিং গাইড বলে

অপারেটিং সিস্টেমের নির্দিষ্ট ফাংশনগুলি আমার পিকের সাথে অভিযোজিত করুন

তবে কীভাবে malloc()এবং free()কার্যগুলি "অনুবাদ" করতে হয় তা আমি জানি না ।


4
সম্ভব হলে স্থির বরাদ্দ ব্যবহার করার চেষ্টা করুন।
নিক টি

1
কেন? সমস্যাটি আসলে হ'ল আমি একটি বিশাল বিশাল গ্রন্থাগারের নীচের স্তরটি (প্ল্যাটফর্ম নির্দিষ্ট একটি) লিখছি এবং অনেকগুলি ক্রিয়াকলাপ আমার জানা নেই যে তারা কী ব্যবহার করছে এটি ব্যবহার করছে .. এবং কীভাবে পরিবর্তন করব তা আমার কোনও ধারণা নেই স্থির থেকে স্থির ..
স্টেফ

11
এটি আপনার পিসি মাইক্রোকন্ট্রোলারের মতো মনে হচ্ছে <4KB র্যাম আপনার অ্যাপ্লিকেশনটির জন্য ভুল হতে পারে। কোনও পিসিতে কোনও পোর্ট শুরু করার আগে আপনার পিসি লাইব্রেরির মেমরির ব্যবহার পরিমাপ করুন। আপনি এআরএম কর্টেক্স-এম 3 এর মতো কিছু বিফায়ার দিয়ে ভাল হতে পারেন। থাম্বের বিধি: আপনি যে কোডবেসটি পোর্ট করছেন সেটি যদি বুঝতে খুব বড় হয় তবে এটি কোনও পিকের সাথে মানাবে না।
টবি জাফি

উইন্ডোজ ড্রাইভারগুলি (এবং সাধারণভাবে অ্যাপ্লিকেশনগুলি) মূলত একটি 'সীমাহীন র‌্যাম' দৃষ্টান্ত দিয়ে লেখা হয়, যেহেতু শারীরিক র‌্যাম নিঃশেষ হয়ে যায়, ভার্চুয়াল মেমরিটি বদলে যেতে পারে the গ্রন্থাগারটি কী করছে তার উপর নির্ভর করে এটি 4kB এর চেয়ে বেশি ব্যবহার করতে পারে আপনার PIC18F87J11 এ উপলব্ধ। আমার সন্দেহ যে আপনি ড্রাইভার কতটা স্মৃতি ব্যবহার করতে পারবেন তা অনুমান করতে সক্ষম হবেন না।
অ্যাডাম লরেন্স

আর একটি সম্ভাব্য সমস্যা: একটি উইন 32 ইন্ট 32 বিট, এমসিসি 18 সংকলক সহ এটি কেবল 16 বিট। আপনি যদি সাবধান না হন তবে আপনি অদ্ভুত ওভারফ্লো সমস্যা পেতে পারেন।
অ্যাডাম লরেন্স

উত্তর:


8

অনেক অ্যাপ্লিকেশনগুলিতে একজনকে মেমরি বরাদ্দ করতে হবে তবে তার পরে বরাদ্দকৃত কিছু রাখার সময় কোনও কিছুই মুক্ত করার দরকার পড়বে না। এই জাতীয় সিস্টেমে, লিঙ্কার ব্যবহার করে সমস্ত উপলব্ধ র্যাম ব্যবহার করে একটি অ্যারের সংজ্ঞা দিতে, সেই অ্যারের শুরুতে একটি পয়েন্টার সেট করে এবং তারপরে একটি দুর্দান্ত সহজ ম্যালোক ফাংশন ব্যবহার করতে হয়:

চর * পরের_লোক;
অকার্যকর * ম্যালোক (ইনট আকার)
{
    চর * এই_লোক;
    this_alloc = next_alloc;
    যদি ((END_OF_ALLOC_SPACE - এই_লোক) <আকার)
      প্রত্যাবর্তন -1;
    পরের_লোক + = আকার;
    এই_লোকটি ফেরত দিন;
}
শূন্য মুক্ত (শূন্য * পিটিআর)
{
    যদি (পিটিআর)
        পরের_লোক = (চর *) পিটিআর;
}

দুর্দান্ত এবং সহজ, যে কোনও বরাদ্দের জন্য মোট ওভারহেড মাত্র দুটি বাইট। কোনও ব্লকে ফ্রি () কল করা সেই ব্লকটি এবং তারপরে যা কিছু ঘটে তা হ্রাস পাবে।

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


সম্ভাবনার বিষয়ে সম্পূর্ণ অবহিত হওয়ার জন্য, ইলেক্ট্রনিক্স.সটাকেক্সচেঞ্জ
প্রশ্নগুলি

14

malloc()মাইক্রোকন্ট্রোলারগুলিতে সাধারণত একটি "খারাপ জিনিস" হিসাবে বিবেচিত হয়। তবে, যদি একেবারে আপনার এটির প্রয়োজন হয় তবে আপনি একটি তৃতীয় পক্ষের সংস্করণ সন্ধান করতে চাইবেন।

আপনি যদি ভাগ্যবান হন তবে আপনি যে কোডটি পোর্ট করছেন সেটি মেমরির ব্লকগুলি পুনরায় ব্যবহারের উপর নির্ভর করতে পারে না। যদি এটি হয় তবে আপনি একটি সাধারণ বরাদ্দক লিখতে পারেন যা কোনও পয়েন্টারকে একটি র‌্যাম বাফারে ফিরিয়ে দেয়, তারপরে অনুরোধকৃত ব্লক আকারের মাধ্যমে পয়েন্টারটিকে অগ্রসর করে।

মাইক্রোকন্ট্রোলারগুলিতে পিসি লাইব্রেরিগুলি পোর্ট করার আগে আমি এই পদ্ধতিটি সফলভাবে ব্যবহার করেছি।

নীচে, আপনি সাথে বরাদ্দকারী সেটআপ করতে my_malloc_init()এবং সাথে মেমরি বরাদ্দ করতে চাই my_malloc()my_free()নির্ভরতা সন্তুষ্ট করার জন্য আছে কিন্তু আসলে কিছুই করবে না। অবশেষে আপনার অবশ্যই স্থান শেষ হয়ে যাবে।

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

uint8_t heap[HEAP_SIZE];
uint8_t *heap_ptr;

void my_malloc_init(void)
{
    heap_ptr = heap;
}

void *my_malloc(size_t len)
{
    uint8_t *p = heap_ptr;
    heap_ptr += len;
    if (heap_ptr >= heap + HEAP_SIZE)
        return NULL;
    else
        return p;
}

void my_free(void)
{
    // do nothing
}

(দ্রষ্টব্য: বাস্তব বিশ্বে আপনার পয়েন্টার সারিবদ্ধকরণ, অর্থাৎ heap_ptr2 বা 4 বাইট দ্বারা গোল করা উচিত )

অন্য বিকল্পটি হ'ল ফ্রিলিস্টেরmalloc() মতো সাধারণত সরবরাহের চেয়ে সহজ বরাদ্দ কাঠামো ব্যবহার করা , যদিও এটি আপনাকে পরিবর্তনশীল আকারের ব্লকগুলি বরাদ্দ করতে দেয় না।


3
আমি অবাক হই যে যখন ম্যালোক এমবেডে কোনও ভাল জিনিস বিবেচনা করে।
কেলেনজবি

1
আমি এখনও একমত যে আপনি প্রোগ্রামগুলিতে গতিশীল বরাদ্দ চান না, যেমন অন্যরা বলেছে, তবে এটি এ যাওয়ার একটি দুর্দান্ত উপায়। এম্বেডের জন্য ডিজাইন করা থার্ড পার্টি ম্যালোক এখন পর্যন্ত সেরা পছন্দ। বিভাজন এড়ানো জরুরি is @ জোবিটাইফি ভাল লিখেছেন
কর্টুক

1
@ কেলেনজব ভাল, এটি সম্পূর্ণ নতুন প্রশ্ন :-)
টবি জাফি

1
আমি প্রস্তাব দিচ্ছি যে আমার_ফ্রি হ'ল_পাত্রটি উত্তীর্ণিত মানকে কার্যকরভাবে নির্দেশিত আইটেম এবং এর পরে বরাদ্দকৃত সমস্ত কিছুকে মুক্ত করে দেওয়া উচিত। স্পষ্টতই একজনকে অবশ্যই এমন ক্রমগুলিতে জিনিস বরাদ্দ করতে হবে যা এই জাতীয় ব্যবহারের অনুমতি দেয় তবে এই ধরণগুলি অস্বাভাবিক নয়। আরেকটি দরকারী প্রকরণের জন্য দুটি জোড়া বরাদ্দ / ফ্রি ফাংশন থাকতে হবে যার মধ্যে একটি শীর্ষ-ডাউন বরাদ্দ করে এবং অন্যটি নীচের অংশে বরাদ্দ দেয়।
সুপারক্যাট

13

এটি আপনার প্রশ্নের খুব কমই উত্তর, তবে গতিশীল মেমরির বরাদ্দটি সাধারণত ছোট র‍্যাম পরিবেশের উপর এবং কোনও অপারেটিং সিস্টেমের অভাবে (যেমন মাইক্রোকন্ট্রোলার বিশ্বে) অনুভূত হয় ... এম্বেডড পরিবেশে আপনার যে হিপ স্থানটি পাওয়া যায় তা সাধারণত কয়েকশো বাইটে পরিমাপ করা ...

ম্যালোক এবং ফ্রি প্রয়োগ করা মূলত "ফ্রি সেগমেন্ট" কাঠামোর একটি লিঙ্কযুক্ত তালিকাল রক্ষণাবেক্ষণ করা হয় এবং আপনি কল্পনা করতে পারেন, সাধারণত মুক্ত মেমরির পরিমাণের তুলনায় মুক্ত বিভাগগুলির সাথে যুক্ত মেটাডেটা অপরিহার্য নয় ... এটি "ওভারহেড" একটি গতিশীল মেমরি পুল পরিচালনার "" যথেষ্ট পরিমাণ উপলভ্য সংস্থান ব্যবহার করে।


এমন বাস্তবায়ন রয়েছে যেখানে মেটাডেটা ওভারহেড খুব ছোট। বরাদ্দকৃত ব্লকের জন্য আপনার কেবল আকারের প্রয়োজন। অব্যবহৃত ব্লকের জন্য, লিঙ্কযুক্ত তালিকার পয়েন্টারগুলি সাধারণত যুক্তিসঙ্গত ন্যূনতম ব্লক আকারের সাথেও নিখরচায় ফিট করতে পারে।
মনিকা পুনরায় ইনস্টল করুন

মাইক্রোকন্ট্রোলার ব্যবহার করে এমন ছোট, দীর্ঘ চলমান সিস্টেমগুলির সমস্যাটি সাধারণত মেটাডেটা সম্পর্কে নয়, মেমরির খণ্ডন সম্পর্কে। সবচেয়ে খারাপ, আপনার কোডের ছোট ছোট পরিবর্তনগুলি মেমরি খণ্ডিত করতে পারে যেখানে আগে ছিল না, যাতে আপনি একটি নির্দোষ চেহারায় পরিবর্তন আনতে পারেন যা হঠাৎ করে আপনার প্রোগ্রামটিকে "খুব শীঘ্রই" কাজ করা বন্ধ করে দেয়।
মনিকা পুনরায় ইনস্টল করুন

11

আমি জানি না যে সি 18 স্ট্যান্ডার্ড লাইব্রেরি সমর্থন করে mallocএবং না free, তবে মাইক্রোচিপ অ্যাপ নোট এএন 914 আপনাকে কীভাবে নিজের প্রয়োগ করতে পারে তা দেখায়।

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

আপনি যা করছেন তা যদি রান-টাইমে সত্যিই গতিশীলভাবে নির্ধারিত হয় (বেশিরভাগ এম্বেডেড জিনিসের জন্য বিরল), এবং আপনাকে কেবল কয়েকটি বিশেষ অনুষ্ঠানের জন্য স্থান বরাদ্দ করতে হবে তবে আমি দেখতে পেয়েছি mallocএবং freeগ্রহণযোগ্য হতে পারি ।


সংক্ষিপ্ত স্থানের বাইরে চলে যাওয়া, ওরফে হিপ বিভাজন, এমন একটি সমস্যা যা আপনার ঠিকানার স্থানটি কত বড় এবং আপনার ভার্চুয়াল মেমরি রয়েছে কিনা তা থেকে সম্পূর্ণ স্বাধীন। আপনি হ্যাপের লোয়ার খণ্ডের জন্য কিছু নষ্ট র‌্যামকে বাণিজ্য করতে চাইতে পারেন, তবে শেষ পর্যন্ত, দীর্ঘ চলমান সিস্টেমে, গাদা স্থানটি না চলে যাওয়ার বিষয়ে আপনার কোনও গ্যারান্টি নেই। এখানে ছোট এবং বড় সিস্টেমে একমাত্র পার্থক্য হ'ল ডিস্কটি থ্র্যাশিং শুরু করতে (ডিস্ক-পেজযুক্ত ভিএম সিস্টেমগুলিতে) বা এলিউলর (এমবেডড স্টাফগুলিতে) ফেরত দেওয়ার জন্য বরাদ্দকারী কত সময় নেয় of
মনিকা পুনরায় ইনস্টল করুন

@ কুবা ওবার: সাধারণত গ্যারান্টি দেওয়া সম্ভব যে কোনও নির্দিষ্ট আকারের র‌্যাম বরাদ্দকরণ এবং প্রকাশের ক্রিয়াকলাপগুলির যে কোনও ক্রম পরিচালনা করতে সক্ষম হবে যা একসাথে নির্দিষ্ট (ছোট) পরিমাণের চেয়ে বেশি পরিমাণে র‌্যামের প্রয়োজন হবে না। এম্বেড থাকা সিস্টেমগুলির মধ্যে সমস্যাটি হ'ল গ্যারান্টিযুক্ত সাফল্যের পক্ষে সবচেয়ে খারাপ ক্ষেত্রে এমনকি খণ্ডন ছাড়াই প্রয়োজনীয় র্যামের চেয়ে অনেক বেশি র্যামের প্রয়োজন হবে।
সুপারক্যাট

@ সুপের্যাট আপনি ঠিক বলেছেন আমি সত্যিই অত্যধিক নাটকীয় ছিল। সেই গ্যারান্টির আনুষ্ঠানিক প্রমাণ রয়েছে।
মনিকা

2

আচ্ছা, স্মৃতির ক্ষেত্রে আপনার পিআইসি কত বড়?

malloc মেমরি বরাদ্দ করার একটি খুব অকার্যকর উপায়। এটির সাথে সমস্যাটি হ'ল মেমরি ঘন ঘন ফ্রেইস এবং ম্যালোকগুলি দিয়ে খণ্ডিত হয়ে উঠতে পারে এবং কেবল কয়েক কিলোবাইট মেমরি দিয়ে, বরাদ্দ ব্যর্থতাগুলি খুব সাধারণ। এটি সম্ভবত সম্ভবত আপনি যদি একটি ছোট চিপ বা পূর্বের পিক 18 ব্যবহার করেন তবে ম্যালোকের জন্য কোনও সমর্থন নেই, কারণ মাইক্রোচিপ একে বাস্তবায়ন করা খুব কঠিন হিসাবে দেখেছে (বা কিছু ক্ষেত্রে এমনকি অসম্ভবও) বা এটি পর্যাপ্তরূপে ব্যবহার করা হয়নি এটা মূল্য। এটি উল্লেখ করার জন্য নয়, তবে এটি বেশ ধীরে ধীরে, আপনি ইতিমধ্যে উপলব্ধ একটি স্ট্যাটিক বাফার ব্যবহারের জন্য 1 টি চক্রের দিকে তাকিয়ে রয়েছেন এবং ম্যালোক করতে 100 থেকে 1000 এর চক্র রয়েছে।

আপনি যদি স্ট্যাটিকালি বরাদ্দ করতে চান তবে আপনার স্প্রিন্টফ ফাংশনগুলির জন্য বাফারের মতো জিনিসগুলি তৈরি করুন (যদি থাকে তবে প্রায় 128 বাইট), আপনার এসডি কার্ডের জন্য একটি বাফার (যদি থাকে), এবং এমন কি, যতক্ষণ না আপনি ম্যালোকের প্রয়োজনীয়তা অপসারণ করেন। আদর্শভাবে, আপনি কেবল এটির ব্যবহার করেন যেখানে আপনার একেবারেই প্রয়োজন হয় এবং স্থির বরাদ্দ দিয়ে দূরে সরে যেতে পারেন না, তবে এই পরিস্থিতিগুলি সাধারণত বিরল এবং সম্ভবত এমন একটি চিহ্ন যা আপনার বড় / আরও শক্তিশালী মাইক্রোকন্ট্রোলারদের দিকে তাকানো উচিত।

এবং যদি আপনি PIC18 এ একটি "অপারেটিং সিস্টেম" বিকাশ / পোর্টিং করছেন এবং যদি এটি মাইক্রোকন্ট্রোলারকে সমর্থন করে তবে এটি সম্ভবত স্থির বরাদ্দের পক্ষে সমর্থন করবে। উদাহরণস্বরূপ, এসকিউএলাইট 3 স্ট্যাটিক বরাদ্দকে সমর্থন করে - আপনি এটিকে একটি বড় বাফার অ্যারে বরাদ্দ করেন এবং এটি মাইক্রোকন্ট্রোলারদের জন্য না হলেও এটি যেখানে সম্ভব সেখানে ব্যবহার করে। যদি তা না হয় তবে আপনি কি নিশ্চিত যে এটি একটি ছোট পিক 18 এর জন্য ডিজাইন করা হয়েছে?


আমি আপনার অর্থটি দেখতে পাচ্ছি .. আমি PIC18F87J11 ব্যবহার করছি, যার 128K র্যাম রয়েছে, এটি কি যথেষ্ট হতে পারে?
স্টেফ

স্টেফানো, সেই চিপে র‍্যামের 3,904 বাইট রয়েছে। এটিতে 128K প্রোগ্রাম ফ্ল্যাশ মেমরি রয়েছে।
W5VO

@ স্টেফাও সালাতী - ৩.৮ কেবি অতি ক্ষুদ্র।
থমাস হে

ঠিক আছে দুঃখিত .. আপনি কি মনে করেন যে এটি যাইহোক যথেষ্ট হতে পারে?
স্টেফ

@ স্টেফানো সালাতী, ক্ষমা চাইতে হবে না। আমি মনে করি আপনি এটি সত্যিই চাপ দিবেন। এটি কার্যকর হতে পারে, তবে এটি কার্যকারিতা এবং আপনার ফ্রি স্মৃতি থেকে বাদ পড়বে।
থমাস হে

2

যদি আপনি বিবেচনা করা হয় malloc() এবং free()আপনার এম্বেড করা সফ্টওয়্যার জন্য আমি তোমাদের UC / অপারেটিং সিস্টেম-II ও কটাক্ষপাত করা সুপারিশ OSMemGet()এবং OSMemPut()malloc()আপনি মেমরির একটি নির্বিচারে ব্লক বরাদ্দ করার সময় , OSMem*()একটি প্রাক বরাদ্দ পুল থেকে আপনাকে একটি নির্দিষ্ট আকারের ব্লক দিন। আমি এই পদ্ধতির malloc()স্থিতিশীল বরাদ্দের নমনীয়তা এবং দৃ this়তার মধ্যে একটি ভাল ভারসাম্য খুঁজে পাই ।


0

আফাইক, এটি সঠিকভাবে করার জন্য, আপনাকে সত্যই কোনও ধরণের মেমরি-পরিচালনা ইউনিট (এমএমইউ) এর সাথে কোনও ডিভাইসটির দিকে তাকাতে হবে। পিক 18 ধারাবাহিকের জন্য গতিশীল বরাদ্দকরণের ব্যবস্থা থাকা সত্ত্বেও, তারা সত্যই দৃ solid় হতে যাচ্ছেনা - এবং পিক 18 সিরিজের সীমাটি ঠেকিয়ে দেওয়া ফার্মওয়্যারের সাথে কাজ করেছেন এমন কেউ হিসাবে কথা বললে, আমি বলতে পারি যে আপনি পাচ্ছেন না যদি আপনি কোনও ওভারহেড কোনও মেমরি পরিচালকের উপরে ব্যয় করেন তবে সেখানে একটি বড় অ্যাপ্লিকেশন।

আরও ভাল সমাধান: এটি কী করছে এবং এটি কেন গতিশীল বরাদ্দ প্রয়োজন তা বোঝার চেষ্টা করুন। স্থির বরাদ্দ দিয়ে কাজ করার জন্য আপনি যদি এটি পুনরায় ফ্যাক্টর করতে না পারেন তা দেখুন। (এটি এমনটি হতে পারে যা কেবল সম্ভব নয়) - যদি গ্রন্থাগার / অ্যাপ্লিকেশনটি এমন কোনও কিছু করার জন্য ডিজাইন করা হয়েছে যা নির্দ্বিধায় স্কেল করে, বা যে পরিমাণ ইনপুট গ্রহণ করতে পারে তার সীমানা না থাকে)) তবে কখনও কখনও যদি আপনি সত্যিই চিন্তা করেন আপনি যা করার চেষ্টা করছেন সে সম্পর্কে স্থির বরাদ্দ ব্যবহারের পরিবর্তে আপনি সম্ভবত এটি সম্ভব (এবং সম্ভবত এটি বেশ সহজ )ও পেতে পারেন।


1
আপনি ভুল একটি এমএমইউ আপনাকে বাহ্যিক মেমরির সাথে ইন্টারফেস করতে দেয় (সম্ভবত পিকের 4kB এর চেয়ে বেশি)। একটি এমএমইউ সহ এবং ছাড়া গতিশীল এবং স্থির বরাদ্দে খুব সামান্য পার্থক্য রয়েছে। একবার আপনি ভার্চুয়াল মেমরি পেতে শুরু করলে, তার মধ্যে একটি পার্থক্য রয়েছে তবে এটি কেবল ম্যালোকের সাথেই জড়িত।
কেভিন ভার্মির

1
প্রারম্ভিক ম্যাকিনটোস প্রোগ্রামাররা ম্যালক () এবং ফ্রি () বা তাদের পাস্কেল সমতুল্য) বেশিরভাগ ক্ষেত্রে ব্যবহার করত, যদিও প্রথমদিকে ম্যাকিনটোস কম্পিউটারগুলির কোনও এমএমইউ ছিল না। Malloc () ব্যবহার করে "সঠিকভাবে" একটি এমএমইউ প্রয়োজন তা ধারণা আমার কাছে ভুল বলে মনে হয়।
ডেভিড্যাকারি 11'11
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.