Мені хотілося б знати, скільки оперативної пам’яті я використовую в своєму проекті, наскільки я можу сказати, немає ніякого способу реально розробити це (крім того, щоб пройти і обчислити її самостійно). Я потрапив на етап досить великого проекту, де я визначив, що мені не вистачає оперативної пам’яті.
Я визначив це, тому що я можу додати розділ, і тоді все пекло проривається десь у моєму коді без видимих причин. Якщо я #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) працює як слід.
редагувати: у третьому рядку є все, що працює, послідовне читання, мої нові функції тощо. Я по суті видалив деякі глобальні змінні та повторюваний код. Я згадую про це, оскільки (як підозрюється) мова йде не про цей код на sae, а про використання оперативної пам'яті. Що повертає мене до початкового питання "як найкраще виміряти", я все ще перевіряю деякі відповіді, дякую.
Як я насправді інтерпретую вищевказану інформацію?
Поки що моє розуміння:
`TEXT` is program instruction memory
`DATA` is variables (unitialised?) in program memory
`BSS` is variables occupying RAM
оскільки BSS значно менше 1024 байт, чому другий працює, а перший не? Якщо це DATA+BSS
тоді обидва займають більше 1024.
повторне редагування: я відредагував питання, щоб включити код, але тепер його видалив, оскільки він справді не мав нічого спільного з проблемою (крім, можливо, поганих методів кодування, оголошень змінних тощо). Ви можете переглянути код, оглянувши правки, якщо дійсно хочете його побачити. Я хотів повернутися до питання, яке базувалося на: Як виміряти використання оперативної пам'яті.
String
тип у своїх програмах? Це, як відомо, здійснює часті динамічні розподіли пам'яті та випуски, які можуть фрагментувати купу до тієї точки, де у вас може не залишитися жодної пам’яті.
String
s із-за накладних витрат. Я задоволений роботою з масивами char, але сказав, що майже завжди визначаю всі свої масиви char із фіксованим розміром (на даний момент у мене є ОДИН байтовий масив, який не є суто тим, що я змінюю довжину вмісту для різних перекомпіляцій.