реклама на сайте
подробности

 
 
> С++ Наследование классов в CCS5., память кончилась...
AlexOr
сообщение Aug 19 2013, 18:57
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 89
Регистрация: 30-12-04
Из: Санкт-Петербург
Пользователь №: 1 754



Смотрю map файл в секции text.
Есть базовый класс 4 КБ.
Дочерний класс 5 КБ , а он содержит буквально несколько нехитрых строк.
Получается, что дочерний включил в себя ВЕСЬ код родителя.

Что-то я не понимаю ООП на микроконтроллерах. Как так?
Получается написал пять строк и забил всю память.
Как заставить компилятор видеть, что основная часть кода одинакова у родителя и потомка?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
DASM
сообщение Aug 20 2013, 03:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



все же, как вы выяснили размер кода, обслуживающего класс? Есть ли оптимизация? функции методы наследованы виртуально (хотя это значения не должно иметь)? Листинг?
Go to the top of the page
 
+Quote Post
thodnev
сообщение Aug 20 2013, 20:19
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 20-01-13
Из: Украина, Киев
Пользователь №: 75 259



при наследовании в плюсах, потомок включает весь код родителя, дополняя его своими методами, полями и т.д. Ничего не поделаешь, разве что сделать больше приватных методов, включить -О3, возможно вызывать функции при помощи расширения, т.е. Class:function1();
На плюсах не пишу, больше ничем не могу помочь
Go to the top of the page
 
+Quote Post
dxp
сообщение Aug 21 2013, 03:20
Сообщение #4


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (thodnev @ Aug 21 2013, 03:19) *
при наследовании в плюсах, потомок включает весь код родителя, дополняя его своими методами, полями и т.д. Ничего не поделаешь

При этом исполняемый код не должен раздуваться. Т.е. если класс имеет функций-членов на 4 кбайта и его наследник вводит ещё своих пару, то общий объём кода должен увеличиться только на эти пару функций - остальные наследник будет использовать из базового. А у ТС аномалия, по его словам, - добавил наследник и код увеличился в два раза.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
DASM
сообщение Aug 21 2013, 03:46
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



гм, а функция надеюсь не printf (cos(rand)) была ? sm.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 14:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016