নেট বইগুলি স্ট্যাক বনাম হিপ মেমরি বরাদ্দের বিষয়ে কথা বলবে কেন?


36

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


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

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

এই মানের ধরণগুলি পুরো বিষয়টি অনুলিপি করে এবং রেফারেন্সগুলি বোঝায় না, কারণগুলি কেন ব্যবহার করতে হবে তা বোঝা সহজতর হবে এবং যেখানে এই মানগুলি সঞ্চিত রয়েছে তা বাস্তবায়ন নির্দিষ্ট, এমনকি অপ্রাসঙ্গিকও হতে পারে।
ত্রিনিদাদ

সাক্ষাত্কার কার্গো কাল্ট?
দী

উত্তর:


37

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

ফেড ইঙ্গিত হিসাবে, এরিক লিপার্ট এই সম্পর্কে বলার জন্য খুব আকর্ষণীয় কিছু জিনিস রয়েছে: http://blogs.msdn.com/b/ericlippert/archive/2010/09/30/the-truth-about-value-types.aspx

সেই তথ্যের আলোকে, আপনি আমার প্রথম অনুচ্ছেদটি মূলত পড়ার জন্য সামঞ্জস্য করতে পারেন: "লোকেরা এই তথ্যকে অন্তর্ভুক্ত করে এবং এটি গুরুত্বপূর্ণ বলে ধরে নেওয়ার কারণটি অতীতে এই জ্ঞানের প্রয়োজনের সাথে মিলিত ভুল বা অসম্পূর্ণ তথ্যের কারণ।"

পারফরম্যান্সের কারণে যারা এখনও এটি গুরুত্বপূর্ণ বলে মনে করেন: আপনি যদি জিনিসগুলি পরিমাপ করেন এবং এটির চেয়ে গুরুত্বপূর্ণ এটি আবিষ্কার করেন তবে আপনি গাদা থেকে স্ট্যাকের দিকে কিছু স্থানান্তরিত করতে কী পদক্ষেপ নেবেন? সম্ভবত, আপনি সমস্যার ক্ষেত্রের জন্য পারফরম্যান্সের উন্নতি করার সম্পূর্ণ ভিন্ন উপায় খুঁজে পেয়েছেন।


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

5
আমি বেশিরভাগ traditionতিহ্যের যুক্তির সাথে একমত হই। অনেক অভিজ্ঞ প্রোগ্রামাররা কোনও পর্যায়ে একটি নিম্ন-স্তরের ভাষায় প্রোগ্রাম করতে পারে যেখানে আপনি সঠিক এবং দক্ষ কোড চাইলে এই স্টাফটি গুরুত্বপূর্ণ। যাইহোক, সি ++ উদাহরণস্বরূপ, একটি নিয়ন্ত্রণহীন ভাষা: অফিসিয়াল স্পেসিফিকেশনটি আসলে বলে না যে স্বয়ংক্রিয় ভেরিয়েবলগুলি অবশ্যই স্ট্যাকের উপরে চলে যেতে হবে , ইত্যাদি। সি ++ এর মান স্ট্যাকটি এবং গাদাটিকে বাস্তবায়নের বিশদ হিসাবে বিবেচনা করে। +1
stakx

36

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

আমি পুরোপুরি একমত; আমি সব সময় এটি দেখতে।

NET বই কেন স্ট্যাক বনাম হিপ মেমরি বরাদ্দ সম্পর্কে কথা বলে?

কারণগুলির একটি অংশ হ'ল কারণ অনেকে সি বা সি ++ ব্যাকগ্রাউন্ড থেকে সি # (বা অন্যান্য। নেট ভাষা) এ এসেছিলেন। যেহেতু এই ভাষাগুলি আপনার জন্য স্টোরেজ আজীবন সম্পর্কিত নিয়মগুলি কার্যকর করে না, তাই আপনাকে সেগুলি বিধিগুলি জানার প্রয়োজন এবং সেগুলি অনুসরণ করার জন্য আপনার প্রোগ্রামটি সাবধানতার সাথে প্রয়োগ করা প্রয়োজন।

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

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

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

স্ট্যাক বনাম হিপ এমনকি কেন (নবীনতর)। নেট বিকাশকারীদের কাছে গুরুত্বপূর্ণ?

আমার মতে, এটা হয় না। যা বোঝার চেয়ে বেশি গুরুত্বপূর্ণ তা হল স্টাফগুলি:

  • একটি রেফারেন্স টাইপ এবং একটি মান ধরণের মধ্যে কপির শব্দার্থবিজ্ঞানের মধ্যে পার্থক্য কী?
  • "রেফ ইন্ট এক্স" প্যারামিটার কীভাবে আচরণ করে?
  • মানের প্রকারগুলি কেন অপরিবর্তনীয়?

ইত্যাদি।

আপনি জিনিস বরাদ্দ এবং এটি ঠিক কাজ করে?

এটাই আদর্শ।

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

একইভাবে, বাস্তববাদী আন্তঃআলাপের পরিস্থিতি রয়েছে যাতে স্ট্যাকের মধ্যে কী রয়েছে এবং গাদাতে কী রয়েছে এবং আবর্জনা সংগ্রহকারী কী ঘুরে বেড়াতে পারে তা জানা দরকার। এজন্য সি # এর "ফিক্সড", "স্ট্যাক্যালোক" ইত্যাদি বৈশিষ্ট্য রয়েছে।

তবে সেগুলি সমস্ত উন্নত পরিস্থিতি। আদর্শভাবে একজন শিক্ষানবিস প্রোগ্রামারকে এই স্টাফগুলির কোনওোটাই সম্পর্কে চিন্তা করতে হবে না।


2
এরিক উত্তরের জন্য ধন্যবাদ। বিষয়টিতে আপনার সাম্প্রতিক ব্লগ পোস্টগুলি আসলে আমাকে প্রশ্ন পোস্ট করার জন্য প্ররোচিত করেছিল।
গ্রেগ

13

আপনারা সবাই পয়েন্টটি মিস করছেন missing স্ট্যাক / গাদা পার্থক্য কেন গুরুত্বপূর্ণ তা হল সুযোগের কারণ ।

struct S { ... }

void f() {
    var x = new S();
    ...
 }

X একবার সুযোগের বাইরে চলে গেলে , তৈরি করা বস্তুটি স্পষ্টতই চলে যায় । এটি কেবলমাত্র কারণ এটি স্ট্যাকের জন্য বরাদ্দ করা হয়, গাদা নয়। পদ্ধতির "..." অংশে thatুকে যেতে পারে এমন কিছুই নেই যা সেই সত্যটিকে পরিবর্তন করতে পারে। বিশেষত, কোনও অ্যাসাইনমেন্ট বা পদ্ধতি কল কেবলমাত্র এস স্ট্রাক্টের অনুলিপি তৈরি করতে পারত , এটি বাঁচিয়ে রাখতে সক্ষম করার জন্য এটিতে নতুন রেফারেন্স তৈরি করে নি।

class C { ... }

void f() {
     var x = new C();
     ...
}

সম্পূর্ণ ভিন্ন গল্প! এক্স যেহেতু এখন স্তূপে রয়েছে , তাই এর অবজেক্টটি (অর্থাৎ এটি নিজেই এটির একটি অনুলিপি নয়) এক্স এর বাইরে চলে যাওয়ার পরে খুব ভালভাবে বাঁচতে পারে । প্রকৃতপক্ষে, কেবলমাত্র এটি কেবল বাঁচতে থাকবে না যদি x এর একমাত্র রেফারেন্স হয়। যদি "..." অংশে অ্যাসাইনমেন্ট বা পদ্ধতি কলগুলি x রেফারেন্সের বাইরে চলে যাওয়ার সময় অন্য রেফারেন্সগুলি তৈরি করে যা এখনও "লাইভ" থাকে , তবে সেই অবজেক্টটি জীবিত থাকবে।

এটি একটি অত্যন্ত গুরুত্বপূর্ণ ধারণা এবং সত্যই "কী এবং কেন" বোঝার একমাত্র উপায় হ'ল স্ট্যাক এবং গাদা বরাদ্দের মধ্যে পার্থক্যটি জানা know


আমি নিশ্চিত নই যে আমি সেই যুক্তিটি বইয়ের আগে স্ট্যাক / হিপ আলোচনার পাশাপাশি বইগুলিতে দেখেছি, তবে এটি ভাল। +1
গ্রেগ

2
কারণ উপায় C # এর বন্ধ জেনারেট করে, কোড ...সৃষ্টি করতে পারে xনির্দেশিত সুযোগ অধিকতর স্থায়ী হত্তয়া একটি কম্পাইলার তৈরি হওয়া ক্লাসের একটি ক্ষেত্র রূপান্তরিত করার জন্য, এবং এইভাবে। ব্যক্তিগতভাবে, আমি অন্তর্ভুক্ত উত্তোলনের ধারণাটিকে ঘৃণ্য মনে করি, তবে ভাষা ডিজাইনাররা এটির পক্ষে রয়েছে বলে মনে হয় (যে কোনও ভেরিয়েবল যা উত্থাপন করা হয় তার নির্দিষ্টকরণের ক্ষেত্রে এটি নির্দিষ্ট করার জন্য এটির বিপরীতে)। প্রোগ্রামের নির্ভুলতা নিশ্চিত করার জন্য, প্রায়শই কোনও সামগ্রীর সাথে উপস্থিত সমস্ত রেফারেন্সের জন্য অ্যাকাউন্ট করা প্রয়োজন। যেহেতু একটি রুটিন ফিরে আসবে, এই বিষয়ে জেনেও, পাস-ইন রেফারেন্সের কোনও অনুলিপি কার্যকর থাকবে না।
সুপারক্যাট

1
'স্ট্রাক্টগুলি স্ট্যাকের উপরে রয়েছে', যথাযথ বিবৃতিটি হ'ল যদি কোনও স্টোরেজ অবস্থান হিসাবে ঘোষণা করা হয় structType fooতবে স্টোরেজ অবস্থানটি fooতার ক্ষেত্রগুলির বিষয়বস্তু ধারণ করে; যদি fooস্ট্যাকের উপরে থাকে তবে এর ক্ষেতগুলিও। যদি fooগাদা হয়, তবে এর ক্ষেতগুলিও। যদি fooকোনও নেটওয়ার্ক অ্যাপল II এ থাকে তবে এর ক্ষেত্রগুলিও। এর বিপরীতে, যদি fooএকটি বর্গ টাইপ ছিল, এটা হয় রাখা হবে null, অথবা একটি রেফারেন্স একটা অবজেক্ট। একমাত্র পরিস্থিতি যেখানে শ্রেণি-ধরণের বলা fooযেতে পারে বস্তুর ক্ষেত্রগুলি ধরে রাখা যদি তা কোনও শ্রেণীর একমাত্র ক্ষেত্র ছিল, এবং নিজের কাছে একটি রেফারেন্স রাখে।
সুপারক্যাট

+1, আমি এখানে আপনার অন্তর্দৃষ্টি পছন্দ করি এবং আমি এটি বৈধ বলে মনে করি ... তবে বইগুলি কেন এই বিষয়টিকে এত গভীরভাবে .েকে দেয় তা আমি ন্যায়সঙ্গত বলে মনে করি না। আপনি এখানে যা ব্যাখ্যা করেছেন তার মতো বলে মনে হয় উক্ত বইয়ের সেই 3 বা 4 টি অধ্যায় প্রতিস্থাপন করতে পারে এবং আরও সহায়তার উপায় হতে পারে।
ফ্রাঙ্ক ভি

1
আমি যা জানি তা থেকে, স্ট্রাইকগুলির কোনও দরকার নেই বা সেগুলি সত্যই সর্বদা স্ট্যাকের উপর চলে না।
সারা

5

কেন তারা বিষয়টি কভার করে, আমি @ কির্কের সাথে সম্মত হই যে এটি একটি গুরুত্বপূর্ণ ধারণা, যা আপনাকে বুঝতে হবে। প্রক্রিয়াগুলি যত ভাল আপনি জানেন, তত সহজে আপনি দুর্দান্ত কার্য সম্পাদন করতে পারেন এমন দুর্দান্ত অ্যাপ্লিকেশনগুলি করতে আরও ভাল করতে পারেন।

এখন এরিক লিপার্ট আপনার সাথে একমত হতে পারে বলে মনে হচ্ছে যে বিষয়টি বেশিরভাগ লেখক সঠিকভাবে কভার করেন নি। হুডের নীচে কী রয়েছে তার দুর্দান্ত ধারণা অর্জনের জন্য আমি আপনাকে তার ব্লগটি পড়ার পরামর্শ দিচ্ছি।


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

5

ঠিক আছে, আমি ভেবেছিলাম এটিই পরিচালিত পরিবেশগুলির পুরো পয়েন্ট। এমনকি আমি এটিকে অন্তর্নিহিত রানটাইমের একটি বাস্তবায়ন বিশদ হিসাবে ডেকে আছি যা সম্পর্কে আপনার কোনও অনুমান করা উচিত নয়, কারণ এটি যে কোনও সময় পরিবর্তিত হতে পারে।

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

আমি মনে করি যে কোনও বই এটি কভার করে কেবল লেখকরা এটিকে খুব বেশি গুরুত্ব দেয় কারণ, বা তারা ধরে নিয়েছে যে তাদের শ্রোতাগুলি (উদাহরণস্বরূপ যদি আপনি "সি ++ প্রোগ্রামারদের জন্য" সি # লিখেছিলেন তবে আপনার বিষয়টি সম্ভবত আবরণ করা উচিত)।

যাইহোক, আমি মনে করি "স্মৃতি পরিচালিত হয়" এর চেয়ে বেশি কিছু বলার নেই। অন্যথায় লোকেরা ভুল সিদ্ধান্তে আসতে পারে।


2

আপনাকে বুঝতে হবে মেমরি বরাদ্দ কীভাবে দক্ষতার সাথে এটি ব্যবহার করতে কার্যকর হয় যদিও আপনাকে এটি স্পষ্টভাবে পরিচালনা করতে হবে না। এটি কম্পিউটার বিজ্ঞানের প্রতিটি বিমূর্ততা প্রযোজ্য।


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

আমার অবশ্যই রবার্টের সাথে একমত হতে হবে

বরাদ্দ করা হিপ এবং স্ট্যাকের মধ্যে পার্থক্য হুবহু মান এবং রেফারেন্সের ধরণের পার্থক্যকে ব্যাখ্যা করে।
জেরেমি

3
@ জেরেমি: আসলেই না। ব্লগস.এমএসডিএন
রবার্ট

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

2

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

তবে বেশিরভাগ অংশের জন্য এটি বেশ একাডেমিক।


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

0

আপনি যেমনটি বলেছেন, সি # মেমরি পরিচালনা বিমূর্ত করার কথা বলেছে, এবং স্তূপ বনাম স্ট্যাক বরাদ্দকরণ বাস্তবায়নের বিশদ যা তত্ত্বীয়ভাবে বিকাশকারী সম্পর্কে জানা উচিত নয়।

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

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.