Оператор New.

Nitrogenium

✩✩✩✩✩✩✩
25 Ноя 2022
29
2
Немного в негатив скатился пост.
Но не моя в том вина...

Но и судя по достаточно трешовым ответам, я могу сделать заключение что никто разбираться не намерен...

Тем не менее... Я Оставлю свой ответ.

new это реально динамическое распределение памяти


Представим реальный проект. 328 атмега. У Нас всего 2Кб оперативы. У нас 3 АЦП(Реально их больше) Что-то они там нюхают, смотрят и протоколируют в массив так как АЦП у нас 10 битный, то нам необходимо 16 битная переменная для массива. То есть 3 массива по 256, это то что наши три датчика разрядят в 1 секунду. Это 1500 байт их доступных 2000.
Далее мы должны вычислить дельту или среднее арифметическое... Или что-то еще
А далее, для наших вычислений нам необходим вообще массив float. А у нас уже килобатов всё! И что делать?
Созданные массивы удаляются при закрытии блока. То есть создаем еще одну функцию и передаём ей всё?. И ладно если нужно только указатель на массив передать, а если еще куча ливера?


Прелесть оператора new в том что мы можем удалить массив внутри блока, и тем самым освободить память.
 

Nitrogenium

✩✩✩✩✩✩✩
25 Ноя 2022
29
2
Сударь, очевидно что вся эта тема возникла только потому, что вы плохо знаете С. Динамический массив, созданный через new, не умирает.
Ну дык ты и напиши как ты будешь обращаться к переменной или массиву вне блока!

Ты чушь читаешь в тырнете, а элементарных азов не понимаешь.
 

bort707

★★★★★★✩
21 Сен 2020
3,004
898
Нитроген, ответ на вопрос из поста 15 будет? Или вы просто поделится наболевшим пришли?

Что можно сказать, похоже ты из старичков, что зависли в асме, а с/с++ так и не освоили. Вот тебе new и кажется неведомой и малопонятной блажью.
 

poty

★★★★★★✩
19 Фев 2020
3,154
926
То есть создаем еще одну функцию и передаём ей всё?
Нет. Сверху показано, как создать контекст без вызова функции. И это - норма языка. То, что Вы её не знаете - Ваша боль.
так как АЦП у нас 10 битный, то нам необходимо 16 битная переменная для массива
Нет. Изучайте С++ и да обрящете.
для наших вычислений нам необходим вообще массив float
Нет. Для вычислений с целочисленными переменными float не нужен. Результат может быть представлен во float для лучшего чтения, но хранится в нём не обязан.
 

bort707

★★★★★★✩
21 Сен 2020
3,004
898
Представим реальный проект. 328 атмега. У Нас всего 2Кб оперативы.
Давно уже пора проснутся. Контроллер выбирают по задаче. Существует масса контроллеров по цене атмеги, с памятью в СТО раз больше.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
537
Saint-Petersburg, Russia
new это реально динамическое распределение памяти
что это за абстрактная фраза? Бывает нереально динамическое? Или реально нединамическое? И что значит распределение?
прелесть оператора new в том что мы можем удалить массив внутри блока
ну вы же чушь пишете - хотя бы загляните в источник ради проформы - objects whose lifetime is not necessarily limited by the scope in which they were created.

Вообще new это C++`ная конструкция. Его задача не имеет отношения к аллокации памяти как таковой, его задача динамически конструировать объекты, где и как они будут созданы определяется в первую очередь свойствами самого объекта, а не "прелестями" нью. Создание Сишных массивов это частный случай. Можно через нью создать объект со специализированным аллокатором, который разместит его очень спецефичным образом в определенном сегменте адресного пространства и далеко не очевидно что это будет куча. Деаллокация такого объекта это вообще отдельный вопрос который к нью уже вообще никакого отношения не имеет.

ну и на закуску - Сшный массив вполне можно "реально динамически" разместить на куче и без нью

C++:
#define ARR_SIZE 100

void* make_array(){
    return calloc(ARR_SIZE, sizeof(uint16_t));
}

int main(){
    uint16_t *arr_ptr = (uint16_t *)make_array();       
    if (arr_ptr)
    {
        for (int n = 0; n != ARR_SIZE; ++n) // print all vals in array
            printf("arr[%d] == %d\n", n, arr_ptr[n]);
    }
    free(arr_ptr);    // release mem
    return 0;
}
 

Nitrogenium

✩✩✩✩✩✩✩
25 Ноя 2022
29
2
@bort707,

Форум к сожалению не нумерует твою ересь :)

Будь добр, уточни, к какому вопросу у тебя возникло пристальное внимание?
Нитроген, ответ на вопрос из поста 15 будет? Или вы просто поделится наболевшим пришли?
что это за абстрактная фраза? Бывает нереально динамическое? Или реально нединамическое? И что значит распределение?
Реально динамическое распределение. Уточнений не требуется ;)