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

 
 
> Динамические переменные и массивы, Можно ли задать динамические массивы ?
Navovvol
сообщение Sep 2 2013, 07:51
Сообщение #1


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

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



Буду краток. Работают ли операторы "new" и "delete" ? Есть ли их аналоги ? Проект делается на Си.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
demiurg_spb
сообщение Sep 2 2013, 07:55
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Navovvol @ Sep 2 2013, 11:51) *
Буду краток. Работают ли операторы "new" и "delete" ? Есть ли их аналоги ? Проект делается на Си.

Нет в си нет "new" и "delete", зато есть malloc и free.
+ ещё есть такая возможность.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 11 2013, 17:04
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(demiurg_spb @ Sep 2 2013, 11:55) *
+ ещё есть такая возможность.


Для маленьких микропроцессоров не лучший способ создавать большие массивы в стеке.
Мне и для больших это не нравится. Лучше malloc() in heep.

Сообщение отредактировал Tarbal - Sep 11 2013, 17:04
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Sep 12 2013, 06:42
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Tarbal @ Sep 11 2013, 21:04) *
Для маленьких микропроцессоров не лучший способ создавать большие массивы в стеке.
Мне и для больших это не нравится. Лучше malloc() in heep.
Ничем не лучше.
Если компилятор умеет хорошо это делать, почему бы и нет?
Например iar-avr это делает отлично, а avr-gcc плохо.
Создание динамического массива любого размера фактически не несёт никаких накладных расходов (кроме пары коррекций вершины стека, что в iar выливается в 2 асм-инструкции или в ноль инструкций, если и так в процедуре выделялось место для стекового фрейма).
В совсем маленьких контроллерах и эти 4 байта на вес золото. А вы говорите malloc...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Sep 12 2013, 07:00
Сообщение #5


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(demiurg_spb @ Sep 12 2013, 09:42) *
Создание динамического массива любого размера фактически не несёт никаких накладных расходов (кроме пары коррекций вершины стека

Создание - да, а разрушение?
Не говоря уже о сборке мусора.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Sep 12 2013, 07:27
Сообщение #6


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(MrYuran @ Sep 12 2013, 11:00) *
Создание - да, а разрушение?
Не говоря уже о сборке мусора.
Я говорил о создании массива переменной длины на стеке (слово динамический я в том контексте применил не к месту).
О какой сборке мусора речь? Всё само-собой получится при раскрутке стека обратно.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Sep 12 2013, 07:52
Сообщение #7


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(demiurg_spb @ Sep 12 2013, 10:27) *
О какой сборке мусора речь? Всё само-собой получится при раскрутке стека обратно.

Значит, мы не об одном и том же говорим.
Локальный массив, живущий во время исполнения функции и динамический объект, живущий вплоть до его целенаправленного уничтожения, это все-таки разные вещи.

То есть, создавать так можно, на время перемещая SP в специальную огороженную область, а вот как обратно освобождать из-под произвольного объекта, да ещё в произвольный момент, что-то не представляю.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Navovvol   Динамические переменные и массивы   Sep 2 2013, 07:51
||- - demiurg_spb   Цитата(MrYuran @ Sep 12 2013, 11:52) Знач...   Sep 12 2013, 08:17
|- - Tarbal   Цитата(demiurg_spb @ Sep 12 2013, 10:42) ...   Sep 12 2013, 12:43
|- - demiurg_spb   Цитата(Tarbal @ Sep 12 2013, 16:43) Засад...   Sep 12 2013, 12:56
|- - Tarbal   Цитата(demiurg_spb @ Sep 12 2013, 16:56) ...   Sep 12 2013, 15:07
|- - demiurg_spb   Спор бесполезен. Вы не понимаете моей основной мыс...   Sep 13 2013, 06:38
|- - Tarbal   Цитата(demiurg_spb @ Sep 13 2013, 10:38) ...   Sep 13 2013, 12:29
|- - demiurg_spb   Цитата(Tarbal @ Sep 13 2013, 16:29) Попыт...   Sep 13 2013, 12:40
|- - Tarbal   Цитата(demiurg_spb @ Sep 13 2013, 16:40) ...   Sep 13 2013, 13:22
|- - kolobok0   Цитата(Tarbal @ Sep 13 2013, 17:22) ..А в...   Sep 13 2013, 14:51
|- - demiurg_spb   Цитата(Tarbal @ Sep 13 2013, 17:22) Скажи...   Sep 13 2013, 15:03
|- - Tarbal   Цитата(demiurg_spb @ Sep 13 2013, 19:03) ...   Sep 13 2013, 15:24
- - Bear_ku   The operators new and delete are not implemented, ...   Sep 2 2013, 08:05
- - Navovvol   Спасибо. Если задуманное получиться, покажу, что ...   Sep 2 2013, 08:51
- - DASM   На самом деле в эмбеддед всякие alloc штука хороша...   Sep 13 2013, 13:35
|- - Tarbal   Цитата(DASM @ Sep 13 2013, 17:35) На само...   Sep 13 2013, 13:50
|- - Tarbal   Цитата(DASM @ Sep 13 2013, 17:35) На само...   Sep 13 2013, 14:08
- - DASM   Причем тут рекурсия вообще ? Данные принимаются в ...   Sep 13 2013, 14:01
- - DASM   Да не буду я ничего приводить, берете какие-то лев...   Sep 13 2013, 14:28
|- - Tarbal   Цитата(DASM @ Sep 13 2013, 18:28) Да не б...   Sep 13 2013, 14:48
|- - DASM   Цитата(Tarbal @ Sep 13 2013, 18:48) а во-...   Sep 13 2013, 14:52
|- - Tarbal   Цитата(DASM @ Sep 13 2013, 18:52) "А...   Sep 13 2013, 14:58
- - DASM   Вобщем malloc использовать стал в микроконтролерах...   Sep 13 2013, 15:42
|- - Tarbal   Цитата(DASM @ Sep 13 2013, 19:42) Вобщем ...   Sep 13 2013, 15:58
- - DASM   Не слишком . Это гораздо безопаснее всего остально...   Sep 13 2013, 16:07
|- - Tarbal   Цитата(DASM @ Sep 13 2013, 20:07) Не слиш...   Sep 13 2013, 19:46
|- - _Pasha   Цитата(Tarbal @ Sep 13 2013, 22:46) СОЗДА...   Sep 14 2013, 04:57
|- - DASM   Цитата(_Pasha @ Sep 14 2013, 08:57) Очеви...   Sep 14 2013, 06:50
|- - _Pasha   Цитата(DASM @ Sep 14 2013, 09:50) Один во...   Sep 14 2013, 12:27
- - IgorKossak   Tarbal, смотрите мой комментарий к Вашему предыдущ...   Sep 13 2013, 16:09
- - DASM   Динамические на стеке ? Это как ? Учить Вас и не д...   Sep 14 2013, 04:33
|- - Tarbal   Цитата(DASM @ Sep 14 2013, 08:33) Динамич...   Sep 15 2013, 23:52
|- - demiurg_spb   Цитата(Tarbal @ Sep 16 2013, 03:52) А вы ...   Sep 30 2013, 07:13
- - Tarbal   Куда ушли те времена, когда требовалось мастерство...   Sep 14 2013, 13:49
- - _Pasha   Кстати, понравившийся многим манагер кучи от Zltig...   Sep 14 2013, 22:06


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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:50
Рейтинг@Mail.ru


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