Saya ingin tahu berapa banyak RAM yang saya gunakan dalam proyek saya, sejauh yang saya tahu, tidak ada cara untuk benar-benar menyelesaikannya (selain melalui dan menghitung sendiri). Saya telah sampai pada tahap dalam proyek yang agak besar di mana saya telah menentukan bahwa saya kehabisan RAM.
Saya telah menentukan ini karena saya dapat menambahkan satu bagian dan kemudian semua kacau di tempat lain dalam kode saya tanpa alasan yang jelas. Jika saya melakukan #ifndef
sesuatu yang lain, itu akan berhasil lagi. Tidak ada yang salah secara pemrograman dengan kode baru.
Saya menduga untuk sementara waktu bahwa saya sampai pada akhir RAM yang tersedia. Saya tidak berpikir saya menggunakan terlalu banyak tumpukan (walaupun itu mungkin), apa cara terbaik untuk menentukan berapa banyak RAM yang sebenarnya saya gunakan?
Melewati dan mencoba menyelesaikannya, saya memiliki masalah ketika saya mendapatkan enum dan struct; berapa memori yang biayanya?
edit pertama : JUGA, saya telah mengedit sketsa saya begitu banyak sejak mulai, ini bukan hasil sebenarnya yang saya dapatkan pada awalnya, tetapi itu adalah apa yang saya dapatkan sekarang.
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
Baris pertama (dengan teks 17554) tidak berfungsi, setelah banyak pengeditan, baris kedua (dengan teks 16316) berfungsi sebagaimana mestinya.
sunting: baris ketiga memiliki semuanya berfungsi, membaca serial, fungsi baru saya, dll. Saya pada dasarnya menghapus beberapa variabel global dan kode duplikat. Saya menyebutkan ini karena (seperti yang diduga) ini bukan tentang kode ini per sae, itu harus tentang penggunaan RAM. Yang membawa saya kembali ke pertanyaan awal, "bagaimana cara mengukurnya" Saya masih memeriksa beberapa jawaban, terima kasih.
Bagaimana cara saya menafsirkan informasi di atas?
Sejauh ini pemahaman saya adalah:
`TEXT` is program instruction memory
`DATA` is variables (unitialised?) in program memory
`BSS` is variables occupying RAM
karena BSS jauh lebih kecil dari 1024 byte, mengapa yang kedua bekerja, tetapi yang pertama tidak? Jika itu DATA+BSS
maka keduanya menempati lebih dari 1024.
sunting kembali: Saya mengedit pertanyaan untuk memasukkan kode, tetapi sekarang saya telah menghapusnya karena itu benar-benar tidak ada hubungannya dengan masalah (selain praktik pengkodean yang mungkin buruk, deklarasi variabel dan sejenisnya). Anda dapat meninjau kode dengan melihat kembali melalui pengeditan jika Anda benar - benar ingin melihatnya. Saya ingin kembali ke pertanyaan yang ada, yang lebih didasarkan pada: Bagaimana mengukur penggunaan RAM.
String
ketik di program Anda? Hal ini diketahui sering melakukan alokasi dan pelepasan memori dinamis, yang dapat memecah tumpukan hingga ke titik di mana Anda mungkin tidak memiliki memo lagi.
String
s karena overhead. Saya senang bekerja dengan array char, yang mengatakan, saya hampir selalu mendefinisikan semua array char saya dengan ukuran tetap (saat ini, saya memiliki satu byte array yang tidak murni karena saya mengubah panjang konten untuk kompilasi ulang yang berbeda.