170 похожих чатов

Https://Pastebin.Com/8BXzn0Tq data в конструкторе и деструкторе это должен быть один

и тот же указатель?

31 ответов

23 просмотра

А что это у тебя за порно в коде? blob = (float *) operator new [] ( imageSize.cols * imageSize.rows * imageSize.channels() * sizeof(float) ); Это кто вам так учил?

Ffff-Ffff Автор вопроса
Ilya Zviagin
А что это у тебя за порно в коде? blob = (float ...

Сырой кусок памяти который считает нейронка после препроцессинга

Ffff-Ffff Автор вопроса
Ilya Zviagin
А что это у тебя за порно в коде? blob = (float ...

Можно просто new, просто я хотел обратить внимание с помощью operator new что это тупо кусок памяти

Ffff Ffff
А что плохого?

Зачем operator new явно вызывать?

Ffff-Ffff Автор вопроса
Ilya Zviagin
Зачем operator new явно вызывать?

Просто что бы выделить память

Ffff-Ffff Автор вопроса
Ilya Zviagin
Зачем operator new явно вызывать?

Это бэд практис? Я могу не знать

Ffff Ffff
Просто что бы выделить память

new float[imageSize.cols * imageSize.rows * imageSize.channels()]?

Ffff-Ffff Автор вопроса
Ffff Ffff
Изначально было так

А почему перестало быть так?)

Ffff-Ffff Автор вопроса
Ffff Ffff
Просто что бы выделить память

Что бы просто выделить, надо array или vector, и всё

Ffff Ffff
Что бы бросилось в глаза

Что ж, цель достигнута: бросилось)

Ffff-Ffff Автор вопроса
Ffff Ffff
Нейронка принимает float *

Да ты шо! Ужас какой...

Ffff-Ffff Автор вопроса
Sergey Anisimov
.data()?

а какие плюсы использовать std::vector вместо простого выделения памяти и удаления в деструкторе? кусок этот всегда фиксированный

Ffff Ffff
а какие плюсы использовать std::vector вместо прос...

> и удаления в деструкторе например. Повышаете RAII-гранулярность, что благоприятно. В частности, не требуется следить за исключениями в конструкторе Вашего типа. Если говорить о стандартобиблиотечном контейнере - он еще и набор инструментов по работе над содержимым предоставляет.

Ffff Ffff
а почему не требуется?

Сконструированные (под)объекты гарантированно разрушаются. Будь, скажем, вектор самостоятельным полем, освобождение захваченного ресурса (выделенной памяти) было бы делегировано ему и произошло бы автоматически, даже при броске из Вашего конструктора. Edit: В случае же с "сырым" new за освобождение отвечает Ваш конструктор.

Anatoly Shirokov
Деструктор

Конструктор. Речь о бросках из него. Edit: Условный T ( ): raw_ptr{new float} { throw 42; } против T ( ): u_ptr{new float} { throw 42; }

Ffff-Ffff Автор вопроса
Sergey Anisimov
Сконструированные (под)объекты гарантированно разр...

имеете ввиду явный вызов деструктора из конструктора при выбросе исключения?

Ffff Ffff
имеете ввиду явный вызов деструктора из конструкто...

Так в подавляющем большинстве случаев нельзя: разрушите объект дважды. Смотрите пример выше: в первом случае инициализируется float* raw_ptr, во втором - std::unique_ptr<float> u_ptr. В первом случае память потечет, во втором - нет.

Anatoly Shirokov
ok

Помимо этого, в vector уже реализован Аллокатор, что оптимизирует работу с динамической памятью.

Stepan Zorin
Помимо этого, в vector уже реализован Аллокатор, ч...

с этим я не спорил, да и вообще не спорил, что надо предпочитать умные указатели сырым

Ffff Ffff
имеете ввиду явный вызов деструктора из конструкто...

просто в случае исключения в конструкторе о всех сырых ресурсах надо позаботиться самостоятельно: struct holder { char* ptr; holder() try : ptr(new char) { throw 42; } catch(...) { delete ptr; } holder(const holder&) = delete; holder& operator=(const holder&) = delete; ~holder() { delete ptr; } }; int main() { try { holder h; } catch(...) { } } а вот если этот код переписать на std::vector, этого ужаса в конструкторе можно избежать

Ffff Ffff
а почему не требуется?

Потому что RAII работает

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта