Projemde ne kadar RAM kullandığımı bilmek istiyorum, anlayabildiğim kadarıyla, gerçekten bunu yapmanın bir yolu yok (kendim hesaplamaktan başka). RAM'i bitirdiğimi belirlediğim oldukça büyük bir projede sahneye çıktım.
Bir bölüm ekleyebilir ve daha sonra tüm cehennem benim kod başka bir yerde görünür bir sebep olmadan gevşek çünkü bunu belirledim . Başka #ifndef
bir şey çıkarsam, tekrar çalışır. Yeni kodda programlı olarak yanlış bir şey yoktur.
Bir süre kullanılabilir RAM'in sonuna geldiğimden şüphelendim. (Mümkün olsa da) çok fazla yığın kullandığımı sanmıyorum, aslında ne kadar RAM kullandığımı belirlemenin en iyi yolu nedir?
Devam edip çözmeye çalıştığımda, numaralara ve yapılara ulaştığımda sorun yaşıyorum; ne kadar belleğe mal oluyorlar?
ilk düzenleme: AYRICA, başlangıçtan beri eskizimi çok düzenledim, bunlar başlangıçta aldığım gerçek sonuçlar değil, ama şimdi aldığım şeyler.
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
İlk satır (metin 17554 ile) çalışmıyor, fazla düzenleme yapıldıktan sonra ikinci satır (metin 16316 ile) olması gerektiği gibi çalışıyor.
düzenleme: üçüncü satır çalışma, seri okuma, benim yeni fonksiyonları, vb her şeye sahiptir. Aslında bazı küresel değişkenler ve yinelenen kod kaldırıldı. Bundan bahsediyorum çünkü (şüphelenildiği gibi) bu, sae başına bu kodla ilgili değil, RAM kullanımı ile ilgili olmalı. Bu da beni asıl soruya geri döndürüyor, "en iyi nasıl ölçülür" hala bazı cevapları kontrol ediyorum, teşekkürler.
Yukarıdaki bilgileri gerçekten nasıl yorumlayabilirim?
Şimdiye kadar benim anlayışım:
`TEXT` is program instruction memory
`DATA` is variables (unitialised?) in program memory
`BSS` is variables occupying RAM
BSS 1024 bayttan önemli ölçüde daha az olduğundan, neden ikinci çalışıyor, ancak birincisi çalışmıyor? Eğer DATA+BSS
ikisi de 1024'ten fazla yer kaplarsa.
yeniden düzenleme: Ben kodu dahil etmek için soruyu düzenledi, ama şimdi gerçekten sorun ile ilgisi yoktu çünkü belki kaldırdım (belki kötü kodlama uygulamaları, değişken bildirimleri ve benzeri dışında). Kodu gerçekten görmek istiyorsanız , düzenlemelere tekrar bakarak inceleyebilirsiniz . Elimdeki soruya geri dönmek istedim.
String
Programlarınızda yazı kullanıyor musunuz ? Bunun, yığını bellekte kalmayacağınız noktaya ayırabilen, sık sık dinamik bellek ayırma ve ayırma işlemleri gerçekleştirdiği bilinmektedir.
String
Genel gider nedeniyle s'den uzak duruyorum . Ben farklı recompiles için içerik uzunluğunu değiştirmek, çünkü tamamen değil BİR bayt dizisi var, dedi, ben hemen hemen her zaman şu anda sabit bir boyut (tüm benim karakter dizileri tanımlamak, char dizileri ile mutlu çalışma değilim.