আমি আমার প্রকল্পে আমি কতটা র্যাম ব্যবহার করছি তা জানতে চাই, যতদূর আমি বলতে পারি, বাস্তবে এটি কাজ করার কোনও উপায় নেই (এটি নিজে চালিয়ে যাওয়া এবং এটি গণনা করা ছাড়া)। আমি বরং একটি বৃহত প্রকল্পে একটি পর্যায়ে পৌঁছেছি যেখানে আমি নির্ধারণ করেছি যে আমি র্যামের বাইরে চলে যাচ্ছি।
আমি এটি নির্ধারণ করেছি কারণ আমি কোনও বিভাগ যুক্ত করতে পারি এবং তারপরে কোনও স্পষ্ট কারণ ছাড়াই সমস্ত কোড আমার কোডে অন্য কোথাও loose িলে যায়। আমি যদি #ifndef
অন্য কিছু বাইরে বেরোন তবে তা আবার কাজ করে। নতুন কোডটির সাথে প্রোগ্রামক্রমে ভুল কিছু নেই।
আমি কিছুক্ষণ সন্দেহ করেছিলাম যে আমি উপলব্ধ র্যামের শেষের দিকে যাচ্ছি। আমি মনে করি না যে আমি খুব বেশি স্ট্যাক ব্যবহার করছি (যদিও এটি সম্ভব) তবে আমি আসলে কতটা র্যাম ব্যবহার করছি তা নির্ধারণ করার সর্বোত্তম উপায় কোনটি?
এর মাধ্যমে কাজ করার চেষ্টা করছি, যখন আমি এনাম এবং স্ট্রাক্টে যাই তখন আমার সমস্যা হয়; তাদের কত স্মৃতি খরচ হয়?
প্রথম সম্পাদনা: এছাড়াও, আমি আমার স্কেচটি শুরু করার পরে এডিট করেছি, এগুলি আমার প্রথম দিকে পাওয়া আসল ফলাফল নয়, তবে আমি এখন যা পাচ্ছি তা সেগুলি।
text data bss dec hex filename
17554 844 449 18847 499f HA15_20140317w.cpp.elf
16316 694 409 17419 440b HA15_20140317w.cpp.elf
17346 790 426 18562 4882 HA15_20140317w.cpp.elf
প্রথম লাইন (পাঠ্য 17554 সহ) কাজ করছে না, অনেক সম্পাদনার পরে, দ্বিতীয় লাইনটি (পাঠ্য 16316 সহ) যেমনটি করা উচিত কাজ করছে।
সম্পাদনা: তৃতীয় লাইনে কাজ করা, সিরিয়াল পাঠ, আমার নতুন ফাংশন ইত্যাদি রয়েছে has আমি প্রয়োজনীয়ভাবে কিছু গ্লোবাল ভেরিয়েবল এবং নকল কোড মুছে ফেলেছি। আমি এটি উল্লেখ করেছি কারণ (সন্দেহ হিসাবে) এটি প্রতি কোডটি এই কোডটি সম্পর্কে নয়, এটি র্যাম ব্যবহার সম্পর্কে হওয়া উচিত। যা আমাকে মূল প্রশ্নে ফিরিয়ে নিয়ে আসে, "কীভাবে এটি সর্বোত্তম পরিমাপ করা যায়" আমি এখনও কিছু উত্তর পরীক্ষা করে দেখছি, ধন্যবাদ।
আমি কীভাবে উপরের তথ্যের ব্যাখ্যা করব?
এখনও পর্যন্ত আমার বোঝার বিষয়টি হ'ল:
`TEXT` is program instruction memory
`DATA` is variables (unitialised?) in program memory
`BSS` is variables occupying RAM
যেহেতু বিএসএস 1024 বাইটের চেয়ে কম, তবে দ্বিতীয়টি কেন কাজ করে তবে প্রথমটি কাজ করে না? যদি তা হয় DATA+BSS
তবে উভয়ই 1024 এরও বেশি দখল করে।
পুনরায় সম্পাদনা: কোডটি অন্তর্ভুক্ত করার জন্য আমি প্রশ্নটি সম্পাদনা করেছি, তবে এখন আমি এটিকে সরিয়ে ফেলেছি কারণ সমস্যাটির সাথে এর আসলে কোনও সম্পর্ক ছিল না (সম্ভবত দরিদ্র কোডিং অনুশীলন, পরিবর্তনশীল ঘোষণা এবং এর মতো)) আপনি যদি সত্যিই এটি দেখতে চান তবে সম্পাদনাগুলি ফিরে দেখে আপনি কোডটি পর্যালোচনা করতে পারেন। আমি হাতে থাকা প্রশ্নটিতে ফিরে যেতে চেয়েছিলাম, যা আরও বেশি ভিত্তি করে তৈরি হয়েছিল: র্যামের ব্যবহার কীভাবে পরিমাপ করা যায়।
String
আপনার প্রোগ্রামগুলিতে টাইপ ব্যবহার করেন ? এটি ঘন ঘন গতিশীল মেমরির বরাদ্দ এবং প্রকাশগুলি করতে পরিচিত, যা আপনাকে এমন কোনও বিন্দুতে টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো করে দিতে পারে
String
ওভারহেডের কারণে এস থেকে দূরে থাকি । আমি চরের অ্যারে নিয়ে কাজ করে খুশি, যা বলেছিল যে, আমি প্রায় সবসময় আমার সমস্ত চর অ্যারে স্থির আকারের সাথে সংজ্ঞায়িত করি (এই মুহুর্তে, আমার কাছে একটি বাইট অ্যারে রয়েছে যা সম্পূর্ণরূপে নয় কারণ আমি বিভিন্ন পুনঃসংযোগের জন্য সামগ্রীর দৈর্ঘ্য পরিবর্তন করি