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

 
 
> Динамические переменные и массивы, Можно ли задать динамические массивы ?
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
Ответов
DASM
сообщение Sep 13 2013, 16:07
Сообщение #2


Гуру
******

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



Не слишком . Это гораздо безопаснее всего остального. И мы коня в вакууме обсуждаем, все это без операционки можно.Знаете присказку, глупцы сложность игнорируют, умные с ней мирятся, а гении — устраняют.Или как то так. Хотите надежно — должно быть просто.

пс, успокойтесь про стек, есть просто заранее выделенные буфера.Это не маллок, это просто и тупо char buff (size)
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 13 2013, 19:46
Сообщение #3


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

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



Цитата(DASM @ Sep 13 2013, 20:07) *
Не слишком . Это гораздо безопаснее всего остального. И мы коня в вакууме обсуждаем, все это без операционки можно.Знаете присказку, глупцы сложность игнорируют, умные с ней мирятся, а гении — устраняют.Или как то так. Хотите надежно — должно быть просто.

пс, успокойтесь про стек, есть просто заранее выделенные буфера.Это не маллок, это просто и тупо char buff (size)


Это вы коня в вакууме обсуждаете.
Какой-то театр абсурда. Причем здесь статические буферы? Я обсуждаю только одну тему:
СОЗДАНИЕ ДИНАМИЧЕСКИХ МАССИВОВ ПЕРЕМЕННОЙ ДЛИНЫ НА СТЕКЕ ОПАСНАЯ ПРАКТИКА.


Если вы полагаете, что вы можете меня чему-то научить, то могу вас заверить это очень маловероятно.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 14 2013, 04:57
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Tarbal @ Sep 13 2013, 22:46) *
СОЗДАНИЕ ДИНАМИЧЕСКИХ МАССИВОВ ПЕРЕМЕННОЙ ДЛИНЫ НА СТЕКЕ ОПАСНАЯ ПРАКТИКА.

Variable length array служит для другого, а именно - для создания массива с классом памяти auto, размер которого зависит от значений, полученных во время выполнения. Это совсем не тот динамический массив, который подразумевается в этой дискуссии. Это просто красивое замещение alloca().

Что до фрагментации в куче - переход к дескрипторам со встроенным счетчиком ссылок приводит к такому набору
Код
typedef struct _descriptor_t
{
// dsc-table содержит список указателей на области памяти
// при использовании кучи - таблица растет вверх от начала кучи,
// выделяемые области памяти - вниз от конца

  uint_least16_t handle;
  uint_least16_t ref_count;
} descriptor_t, *descriptor_p;
#define DESCRIPTOR(name) descriptor_t name __attribute__((cleanup(force_free_dsc))
descriptor_t alloc_dsc(size_t sz);
void *ref(descriptor_t dsc);// dsc.ref_count +=1; return dsc_table[dsc.handle];
void unref(descriptor_t dsc); //  if(--dsc.ref_count == 0) free_dsc(&dsc);

void free_dsc(descriptor_p dsc);
void force_free_dsc(descriptor_p dsc){dsc->ref_count = 0; free_dsc(dsc);}

После чего оптимизация дыр в куче - делается на этапе освобождения памяти.
Очевидно, что дополнительные накладные расходы не очень тяжелые, поскольку для доступа нужно один раз выделить auto указатель и выполнить ref()
Auto дескриптор с cleanup атрибутом работает прекрасным уборщиком мусора, а статические дескрипторы не нуждаются в unref()
Такие вот мысли...

ps исправил неточности. Если чего пропустил, делайте замечания.

Сообщение отредактировал _Pasha - Sep 14 2013, 05:15
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Navovvol   Динамические переменные и массивы   Sep 2 2013, 07:51
- - demiurg_spb   Цитата(Navovvol @ Sep 2 2013, 11:51) Буду...   Sep 2 2013, 07:55
|- - Tarbal   Цитата(demiurg_spb @ Sep 2 2013, 11:55) +...   Sep 11 2013, 17:04
|- - demiurg_spb   Цитата(Tarbal @ Sep 11 2013, 21:04) Для м...   Sep 12 2013, 06:42
|- - MrYuran   Цитата(demiurg_spb @ Sep 12 2013, 09:42) ...   Sep 12 2013, 07:00
||- - demiurg_spb   Цитата(MrYuran @ Sep 12 2013, 11:00) Созд...   Sep 12 2013, 07:27
||- - MrYuran   Цитата(demiurg_spb @ Sep 12 2013, 10:27) ...   Sep 12 2013, 07:52
||- - 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   Цитата(_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 Текстовая версия Сейчас: 22nd July 2025 - 10:01
Рейтинг@Mail.ru


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