স্থিতিশীলভাবে libstdc ++ এর সংযোগ রয়েছে: কোন গোছা?


90

উবুন্টু ১০.০৪ চলমান সিস্টেমে জিসিসি ৪.7 এর লিবিস্টডিসি ++ সহ উবুন্টু ১২.১০ এর উপরে নির্মিত একটি সি ++ অ্যাপ্লিকেশন স্থাপন করা দরকার, যা বেশিরভাগ পুরানো সংস্করণ নিয়ে আসে লাইবস্টডিসি ++ এর সাথে।

-static-libstdc++ -static-libgccএই ব্লগ পোস্টটির পরামর্শ অনুসারে বর্তমানে আমি সংকলন করছি : libstdc ++ স্থিতিশীলভাবে সংযুক্ত করছি । লেখক libstdc ++ স্থিতিশীলভাবে সংকলন করার সময় কোনও গতিশীল-লোড সি ++ কোড ব্যবহার করার বিরুদ্ধে সতর্ক করেছিলেন, যা আমি এখনও পরীক্ষা করে দেখিনি। তবুও, এখনও পর্যন্ত সবকিছু সুষ্ঠুভাবে চলছে বলে মনে হচ্ছে: আমি উবুন্টু 10.04 এ সি ++ 11 বৈশিষ্ট্য ব্যবহার করতে পারি, যা আমি পরে ছিলাম।

আমি লক্ষ করি যে এই নিবন্ধটি ২০০৫ সালের, এবং সম্ভবত তখন থেকে অনেক কিছু পরিবর্তন হয়েছে। এর পরামর্শ কি এখনও আছে? আমার কি সচেতন হওয়া উচিত কোন লুকোচুরি সমস্যা?


না, স্থিরভাবে libstdc ++ এর সাথে সংযুক্তি এটি বোঝায় না। যদি এটি বোঝায় যে তবে -static-libstdc++বিকল্পটির কোনও অর্থ হবে না , আপনি কেবল ব্যবহার করবেন-static
জোনাথন ওয়েকেলি

@ জোনাথানওয়াকেলি -স্ট্যাটিক kernel too oldকিছু উবুন্টু 1404 সিস্টেমে ত্রুটি পাবে । Glibc.so kernel32.dllউইন্ডোতে মত , এটি অপারেশন সিস্টেম ইন্টারফেসের অংশ, আমাদের এটি আমাদের বাইনারি এম্বেড করা উচিত নয়। আপনি objdump -T [binary path]এটিকে গতিশীল-লোড হওয়া libstdc++.soবা না দেখার জন্য ব্যবহার করতে পারেন । গোলং প্রগ্রেমার জন্য, আপনি #cgo linux LDFLAGS: -static-libstdc++ -static-libgcc"সি" আমদানি করার আগে যুক্ত করতে পারেন
ব্রোঞ্জের মানুষ

@bronzeman, কিন্তু আমরা কথা বলছি সম্পর্কে -static-libstdc++না -staticতাই libc.soস্ট্যাটিক্যালি লিঙ্ক করা হবে না।
জোনাথন ওয়েকলি

4
@ নিকহচিনসন লিঙ্ক-টু ব্লগ পোস্টটি চলে গেছে। এই এস প্রশ্নটি এখানে প্রাসঙ্গিক পদগুলির জন্য জনপ্রিয় অনুসন্ধান হিট। আপনি কি আপনার প্রশ্নে সেই ব্লগ পোস্টটি থেকে সমালোচনামূলক তথ্যটি পুনরুত্পাদন করতে পারেন, বা আপনি যদি জানেন যে এটি কোথায় স্থানান্তরিত হয়েছে?
ব্রায়ান কেইন

4
@ ব্রায়ানকাইন ইন্টারনেট সংরক্ষণাগারটিতে এটি রয়েছে: web.archive.org/web/20160313071116/http://www.trilithium.com/…
রব কেনেগার

উত্তর:


135

ব্লগ পোস্টটি বেশ ভুল।

আমি যতদূর জানি সি ++ এবিআই পরিবর্তনগুলি জিসিসির প্রতিটি বড় রিলিজের সাথে (যেমন বিভিন্ন প্রথম বা দ্বিতীয় সংস্করণের নম্বর উপাদানগুলির সাথে) চালু করা হয়েছে।

সত্য না. জিসিসি ৩.৪-এর পর থেকে কেবলমাত্র সি ++ এবিআই পরিবর্তনগুলি পশ্চাদপটে সামঞ্জস্যপূর্ণ, যার অর্থ সি ++ এবিআই প্রায় নয় বছর ধরে স্থিতিশীল রয়েছে।

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

জিসিসির ডিস্ট্রিবিউশনগুলির প্যাচযুক্ত সংস্করণগুলির মধ্যে পার্থক্যগুলি সামান্য, এবং এবিআই পরিবর্তন হচ্ছে না, যেমন ফেডোরার 4.6.3 20120306 (রেড হ্যাট ৪.6.৩-২) অ্যাবিআই প্রবাহিত এফএসএফ ৪.6.x রিলিজের সাথে সামঞ্জস্যপূর্ণ এবং প্রায় কোনও 6.6 সহ। অন্য কোনও ডিস্ট্রো থেকে এক্স।

জিএনইউ / লিনাক্সে জিসিসির রানটাইম লাইব্রেরিগুলিতে ইএলএফ প্রতীক সংস্করণ ব্যবহার করা হয়েছে যাতে অবজেক্ট এবং লাইব্রেরিগুলির জন্য প্রয়োজনীয় প্রতীক সংস্করণগুলি পরীক্ষা করা সহজ হয় এবং যদি আপনার এমন একটি libstdc++.soচিহ্ন থাকে যা এটি কাজ করবে তবে এটি কিছুটা ভিন্ন প্যাচযুক্ত সংস্করণ কিনা তা বিবেচ্য নয় doesn't আপনার distro এর অন্য সংস্করণ থেকে।

তবে যদি কাজ করা হয় তবে কোনও সি ++ কোড (বা সি ++ রানটাইম সমর্থন ব্যবহারকারী কোনও কোড) গতিযুক্তভাবে লিঙ্কযুক্ত হতে পারে না।

এটিও সত্য নয়।

এটি বলেছে, স্থিতিশীলভাবে সংযুক্ত করা আপনার libstdc++.aপক্ষে একটি বিকল্প।

আপনি যদি কোনও লাইব্রেরি (ব্যবহার করে dlopen) ডায়নামিকভাবে লোড করেন তবে এটি কাজ না করার কারণটি হ'ল আপনি যখন (স্ট্যাটিকালি) এটি সংযুক্ত করেছিলেন তখন আপনার অ্যাপ্লিকেশনটির কাছে libstdc ++ চিহ্নের প্রয়োজন হয় না, সুতরাং সেই চিহ্নগুলি আপনার কার্যকর করার যোগ্য উপস্থিত হবে না। এটি ভাগ করে নেওয়া লাইব্রেরির সাথে গতিশীলভাবে সংযোগ স্থাপনের মাধ্যমে সমাধান করা যেতে পারে libstdc++.so(এটি নির্ভর করে তবে যা করা সঠিক জিনিস)) ইএলএফ প্রতীক আন্তঃব্যবস্থার অর্থ আপনার এক্সিকিউটেবলের মধ্যে উপস্থিত চিহ্নগুলি ভাগ করা লাইব্রেরি দ্বারা ব্যবহৃত হবে, তবে অন্যরা তা নয় আপনার এক্সিকিউটেবলের মধ্যে উপস্থিত libstdc++.soএটির সাথে যা লিঙ্ক করে তা পাওয়া যাবে । যদি আপনার অ্যাপ্লিকেশনটি ব্যবহার না করে তবে dlopenআপনাকে সে সম্পর্কে যত্ন নেওয়ার দরকার নেই।

অন্য একটি বিকল্প (এবং আমি পছন্দ করি এমনটি ) হ'ল libstdc++.soআপনার অ্যাপ্লিকেশনের পাশাপাশি আরও নতুন স্থাপনা করা এবং এটি ডিফল্ট সিস্টেমের আগে পাওয়া যায় তা নিশ্চিত করা libstdc++.so, যা ডায়নামিক লিংকটিকে সঠিক জায়গায় দেখার জন্য জোর করে তৈরি করা যেতে পারে, হয় $LD_LIBRARY_PATHরান-এ পরিবেশ পরিবর্তনশীল ব্যবহার করে- সময়, বা RPATHলিঙ্ক-সময়ে এক্সিকিউটেবলের মধ্যে একটি সেট করে। আমি RPATHঅ্যাপ্লিকেশনটি কাজ করার জন্য পরিবেশটি সঠিকভাবে সেট করা হচ্ছে না বলে এটি ব্যবহার করতে পছন্দ করি । আপনার সাথে আপনার আবেদন লিঙ্ক করেন '-Wl,-rpath,$ORIGIN'(নোট শেল প্রসারিত করার চেষ্টা প্রতিরোধ একক উদ্ধৃতি $ORIGIN) তাহলে এক্সিকিউটেবল থাকবে একটি RPATHএর $ORIGINযা এক্সিকিউটেবল নিজেই হিসাবে একই ডিরেক্টরির মধ্যে ভাগ লাইব্রেরির জন্য চেহারায় গতিশীল linker বলে। নতুন করে রাখলেlibstdc++.soএক্সিকিউটেবলের মতো একই ডিরেক্টরিতে এটি রান-টাইমে পাওয়া যাবে, সমস্যা সমাধান হয়েছে। (অন্য বিকল্প এক্সিকিউটেবল করা হয় /some/path/bin/এবং নতুন আগে থেকে libstdc ++। তাই /some/path/lib/এবং সাথে লিঙ্ক '-Wl,-rpath,$ORIGIN/../lib'এক্সিকিউটেবল করার বা অন্য কোন নির্দিষ্ট অবস্থান আপেক্ষিক, এবং সেট করার RPATH আপেক্ষিক $ORIGIN)


8
বিশেষত আরপিএটিএইচ সম্পর্কে এই ব্যাখ্যা গৌরবময়।
23:30 এ শিরোনাম

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

7
@ ক্যাপ, ওপি বিশেষত একটি ডিস্ট্রোতে মোতায়েনের বিষয়ে জিজ্ঞাসা করছে যেখানে সিস্টেমটি libstdc ++ বেশি পুরানো। বাষ্পের সমস্যাটি হ'ল তারা একটি libstdc ++ বান্ডিল করেছে। সুতরাং এটি সিস্টেমের চেয়ে পুরনো ছিল (সম্ভবত তারা এটি বান্ডিল করার সময় এটি আরও নতুন ছিল, তবে ডিস্ট্রসগুলি আরও নতুনতে চলে গিয়েছিল)। এটি RPATH পয়েন্টটি সমাধানের মাধ্যমে সমাধানের সাথে একটি বেলনযুক্ত লাইব libstdc++.so.6বা সিস্টেমটি আরও নতুন হলে সিস্টেমের দিকে চিহ্নিত করার জন্য ইনস্টল করার সময় সেট করা একটি সিমিলিংকযুক্ত ডিরেক্টরিতে নির্দেশ করে। রেড হ্যাট ডিটিএস দ্বারা ব্যবহৃত আরও জটিল মিশ্র-লিংকেজ মডেল রয়েছে তবে সেগুলি নিজেরাই করা শক্ত।
জোনাথন ওয়েকেলি

4
আরে মানুষ, আমি দুঃখিত যদি আমি আমার মডেলটি পিছনের দিকের-কম্পাট বাইনারিগুলি প্রেরণের জন্য "লিবিস্টডিসি ++ এবিআই কমপ্যাট রাখার জন্য অন্যান্য লোকদের বিশ্বাস" বা "শর্তসাপেক্ষে লিবিস্টডিকে ++ রানটাইমের সাথে সংযুক্ত করা" অন্তর্ভুক্ত না করে ... তবে যদি এখানে কিছু পালক নড়াচড়া করে তবে এবং সেখানে, আমি কী করতে পারি, আমি বোঝাতে চাইছি কোনও অনাদর। এবং যদি আপনি memcpy@GLIBC_2.14 নাটকটির কথা মনে রাখেন তবে এটিকে নিয়ে বিশ্বাসের সমস্যা থাকার জন্য আপনি সত্যিই আমাকে দোষ দিতে পারবেন না

6
আমাকে '-Wl, -rpath, $ ORIGIN' (rpath এর সামনে '-' নোট করুন) ব্যবহার করতে হয়েছিল। আমি উত্তরটি সম্পাদনা করতে পারছি না কারণ সম্পাদনাগুলি কমপক্ষে 6 টি অক্ষর হতে হবে ....
ব্যবহারকারীর 68687

11

জোনাথন ভেকলির দুর্দান্ত উত্তরের একটি যোগ, ড্লোপেন () কেন সমস্যাযুক্ত:

জিসিসি 5-তে নতুন ব্যতিক্রম হ্যান্ডলিং পুলের কারণে ( পিআর 64535 এবং পিআর 65434 দেখুন ), আপনি যদি লাইবস্টিডি ++ এর সাথে স্ট্যাটিকালি লিঙ্কযুক্ত একটি লাইব্রেরি সরিয়ে রেখে এবং বন্ধ করেন, তবে প্রতিবার একটি মেমরি ফাঁস (পুল অবজেক্টের) পাবেন। সুতরাং আপনি যদি কখনও ড্লোপেন ব্যবহার করেন এমন কোনও সম্ভাবনা থাকে তবে স্থিরভাবে libstdc ++ লিঙ্ক করা সত্যিই খারাপ ধারণা বলে মনে হচ্ছে। নোট করুন যে PR 65434 তে উল্লিখিত সৌম্যর বিপরীতে এটি একটি আসল ফাঁস ।


4
ফাংশনটি __gnu_cxx::__freeres()এই ইস্যুটির সাথে কমপক্ষে কিছু সহায়তা সরবরাহ করবে বলে মনে হচ্ছে, কারণ এটি পুল অবজেক্টটির অভ্যন্তরীণ বাফারকে মুক্তি দেয়। তবে আমার পক্ষে এটি অস্পষ্ট যে এরপরে দুর্ঘটনাক্রমে পরে ব্যতিক্রমগুলি সম্পর্কিত এই ফাংশনটিতে একটি আহ্বান জড়িত।
ফিলিপসি

3

আরপাথ সম্পর্কিত জোনাথন ভেকলির উত্তরে অ্যাড-অন:

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

উদাহরণস্বরূপ, আসুন আমরা বলি যে আপনার কাছে একটি অ্যাপ্লিকেশন অ্যাপ.এক্সই রয়েছে যা লিবিস্টডিসি ++ এর উপর ডায়নামিকালি-লিঙ্কড নির্ভরশীলতা রয়েছে ।জিসিসি 4.9 এর জন্য so.x। অ্যাপ.এক্স.পি-র এই নির্ভরতা আরপিএটিএইচ এর মাধ্যমে সমাধান করা হয়েছে, অর্থাৎ

App.exe (RPATH=.:./gcc4_9/libstdc++.so.x)

এখন আসুন আমরা আর একটি লাইব্রেরি Dependency.so আছে যা libstdc ++ এর উপর ডায়নামিকালি-লিঙ্কড নির্ভরশীলতা রয়েছে। সুতরাং জিসিসি 5.5 এর জন্য। এখানে নির্ভরতা গ্রন্থাগারের আরপিএটিএইচ এর মাধ্যমে সমাধান করা হয়, অর্থাৎ

Dependency.so (RPATH=.:./gcc5_5/libstdc++.so.y)

যখন অ্যাপ.এক্সই নির্ভরশীলতা লোড করে, এটি গ্রন্থাগারের আরপিএটিএইচ সংযোজন করে না বা সংশোধন করে না । এটি একেবারেই পরামর্শ করে না। একমাত্র আরপিএটিএইচ হিসাবে বিবেচনা করা হবে এটি চলমান অ্যাপ্লিকেশনটি, বা এই উদাহরণে অ্যাপ.এক্সএক্সই হবে। এর অর্থ হ'ল যদি গ্রন্থাগারটি gcc5_5 / libstdc ++ তে থাকা প্রতীকগুলির উপর নির্ভর করে তবে তাই gcc4_9 / libstdc ++ তে নেই, তাই লাইব্রেরিটি লোড হতে ব্যর্থ হবে।

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


সুতরাং ভাগ করা লাইব্রেরির জন্য আরপাথ এক ধরণের অর্থহীন! এবং আমি আশা করছিলাম, তারা গত 2 দশকে এই বিষয়ে লিনাক্সকে কিছুটা উন্নত করেছে ...
ফ্র্যাঙ্ক পাক

2

আপনি গতিশীল গ্লিবসি উপর নির্ভর করে না তা নিশ্চিত করার প্রয়োজনও হতে পারে। চালান lddআপনার এক্সিকিউটেবল ফলে উপর এবং কোন গতিশীল নির্ভরতা নোট (libc / libm / libpthread usal সন্দেহভাজন হয়)।

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


4
গতিশীল গ্লিবসি উপর নির্ভর করে সমস্যা কি?
নিক হাচিনসন

আমি বিশ্বাস করি কমপক্ষে কিছু সময় আগে libstdc ++ glibc এর উপর নির্ভরশীল নির্ভরতা। আজ কোথায় জিনিস দাঁড়িয়ে আছে তা নিশ্চিত নয়।
আলেকজান্ডার এল বেলিকফ

9
libstdc ++ glibc এর উপর নির্ভর করে (যেমন iostreams শর্তাবলী কার্যকর করা হয় printf) তবে যতক্ষণ না উবুন্টু 10.04-এ গ্লিব্যাক নতুন libstdc দ্বারা প্রয়োজনীয় সমস্ত বৈশিষ্ট্য সরবরাহ করে ++ ডায়নামিক গ্লিবসি উপর নির্ভর করে কোন সমস্যা নেই, আসলে এটি লিঙ্কযুক্ত না করার জন্য অত্যন্ত প্রস্তাবিত স্থিতিশীলভাবে
গ্লিবসি

1

আমি নিম্নলিখিতটি জোনাথন ওয়াকিলির উত্তরে যুক্ত করতে চাই।

-static-libstdc++লিনাক্সের চারপাশে খেলে , আমি সমস্যার মুখোমুখি হয়েছি dlclose()। ধরুন আমাদের একটি অ্যাপ্লিকেশন 'এ' স্ট্যাটিকভাবে লিঙ্কযুক্ত আছে libstdc++এবং এটি libstdc++রানটাইমের সময় 'পি' প্লাগইনটিতে গতিশীলভাবে সংযুক্ত লোড হয়। সেটা ঠিক আছে. কিন্তু যখন 'এ' 'পি' আনলোড করে, সেগমেন্টেশন ত্রুটি ঘটে। আমার ধারণাটি আনলোড করার পরে libstdc++.so, 'এ' আর সম্পর্কিত প্রতীক ব্যবহার করতে পারে না libstdc++। মনে রাখবেন যে 'এ' এবং 'পি' উভয়ই যদি স্থিতিশীলভাবে সংযুক্ত থাকে libstdc++, বা 'এ' গতিশীলভাবে এবং 'পি' স্থিতিশীলভাবে সংযুক্ত থাকে, সমস্যাটি ঘটে না।

সংক্ষিপ্তসার: যদি আপনার অ্যাপ্লিকেশনটি গতিশীলভাবে লিঙ্ক করতে পারে এমন প্লাগইনগুলি লোড / আনলোড করে libstdc++তবে অ্যাপ্লিকেশনটিকে অবশ্যই এটির সাথে গতিযুক্তভাবে লিঙ্ক করা উচিত। এটি কেবল আমার পর্যবেক্ষণ এবং আমি আপনার মন্তব্যগুলি পেতে চাই।


4
এটি সম্ভবত libc বাস্তবায়ন মিশ্রণের অনুরূপ (বলুন গতিশীলভাবে একটি প্লাগিনের সাথে লিঙ্ক করুন যা পরিবর্তিতভাবে গ্লিবিককে সংযুক্ত করে, যেখানে অ্যাপ্লিকেশনটি স্থায়ীভাবে ম্যাসল-লিবিসি-র সাথে যুক্ত থাকে)। মসল-লিবিসি-র লেখক, সমৃদ্ধ ফেলকার দাবি করেছেন যে এ জাতীয় দৃশ্যে সমস্যাটি হ'ল গ্লিবসি মেমরি ম্যানেজমেন্ট (ব্যবহার করে sbrk) কিছু নির্দিষ্ট ধারণা অনুধাবন করে এবং বেশিরভাগই এক প্রক্রিয়ার মধ্যে একা থাকার প্রত্যাশা করে ... নিশ্চিত না এটি যদি সীমাবদ্ধ থাকে তবে নির্দিষ্ট glibc সংস্করণ বা যাই হোক না কেন, যদিও।
0xC0000022L

এবং লোকেরা এখনও উইন্ডোজ হ্যাপ ইন্টারফেসের সুবিধাগুলি দেখতে পায় না, যা একক প্রক্রিয়ার মধ্যে একাধিক স্বতন্ত্র লিপি ++ / লিবিসি মোকাবেলা করতে সক্ষম। এই ধরনের লোকদের সফ্টওয়্যার ডিজাইন করা উচিত নয়।
ফ্রাঙ্ক পাক :20

@ ফ্র্যাঙ্কপাক উইন্ডোজ এবং লিনাক্স উভয়েরই অভিজ্ঞতার একটি সুপরিচিত পরিমাণ সহ আমি আপনাকে বলতে পারি যে এমএসভিসি পার্টি যখন বরাদ্দকারী কীভাবে ব্যবহৃত হয় এবং কীভাবে সিদ্ধান্ত নেয় তখন "উইন্ডোজ" যেভাবে এটি করবে না তা আপনাকে সাহায্য করবে না। উইন্ডোজের হিপগুলির সাথে আমি যে প্রধান সুবিধাটি দেখি তা হ'ল আপনি বিট এবং টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো করে মুক্ত করতে পারেন free তবে এমএসভিসি দিয়ে আপনি এখনও উপরোক্ত বর্ণিত সমস্যাটিকে অনেকটা দৌড়াদৌড়ি করতে পারবেন, যেমন অন্য ভিসি রানটাইম দ্বারা বরাদ্দকৃত পয়েন্টারগুলি অতিক্রম করার সময় (রিলিজ বনাম ডিবাগ বা স্ট্যাটিকালি বনাম গতিশীলভাবে সংযুক্ত)। সুতরাং "উইন্ডোজ" ইমিউন নয়। উভয় সিস্টেমে যত্ন নিতে হবে।
0xC0000022L
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.