Anatoly
или ты говоришь, что до deallocate не дойдет?
Matwey
Matwey
deallocate нужно делать руками
Matwey
ты его не делай руками и всё будет хорошо
Matwey
но большого смысла обсуждать как оно будет глючить я не вижу. нужен алокатор в unique_ptr, напиши свой deleter
Anonymous
В текущих имплементациях gcc и clang не падают, ибо в их реализациях std::allocate зовет под капотом new[]. msvc падает если размер буфера больше 4096.
Anonymous
Оказалось что в головах разработчиков allocate == new[], а deallocate == delete[].
PRoSToC0der
Б
411
411 это code point юникодовский
Andy
типа китайского ?
PRoSToC0der
а для конвертации из utf-16 в utf-8 в первом приближении можно заюзать это http://en.cppreference.com/w/cpp/locale/codecvt_utf8_utf16
PRoSToC0der
не обязательно. может быть std::allocator под капотом делает new/delete
http://en.cppreference.com/w/cpp/memory/allocator/allocate
Allocates n * sizeof(T) bytes of uninitialized storage by calling ::operator new(std::size_t) or ::operator new(std::size_t, std::align_val_t) (since C++17), but it is unspecified when and how this function is called.
По сути он может один раз (пока не кончится) большой блок аллоцировать и потом возвращать отдельные куски из него
PRoSToC0der
Andy
обычный текст и русские - по 2 байта
а этот символ 4я
Aleksandr
Всем привет, подкиньте идей по чтению любых файлов в бинарном виде для дальнейшей передачи данных в соккет.
Andy
именно эти 4 байта оказались в файла:)
ну спасибо
хоть точно знаю теперь что они туда засунули
Andy
значит utf-16
а как передать сырые данные типа этих в шарп с длл на с++ не знаете ? перебрал кучу вариантов, с простым текстом получается, а надо произвольный блок данных типа этого
PRoSToC0der
PRoSToC0der
здесь по сути нужно передать что-то вроде byte[]
Andy
не могу сейчас точно сказать
больше десятков вариантов уже и не знаю какой работал
меня просто текст не устравал
DllImport, маршалинг со стороны шарпа и без него
сам параметр как StringBuilder, IntPtrm, string
Andy
в шарпе есть тоже библиотеки для leveldb
но одна только заработала немного
но не совсем
наверное тоже проблема в ней внутри с перекодировкой
в хромиуме даже ключи имеют нули внутри себя в этой базе
и именно те что мне нужны как раз с нулями
Andy
наверное внутри библиотеки на шарпе отсекается та часть что после нуля
в итоге итератор при проходе не видит всех записей у которых ключ с нулями внутри строк
PRoSToC0der
https://stackoverflow.com/questions/5072340/c-sharp-marshalling-double-from-c-dll
https://stackoverflow.com/questions/16461057/returning-data-from-c-method-written-in-the-c-dll-into-c-sharp
PRoSToC0der
можно попробовать в два этапа:
1. запрос размера данных
2. создание массива байтов необходимого размера и его передача
Matwey
Matwey
Я кстати хочу добавить что в STL есть allocate_shared
Matwey
а allocate_unique нету
Matwey
Хотя должен быть
Matwey
А allocate_shared делает именно то, что просили. Выделяет для shared_ptr память через allocator
Matwey
Господа, объясните мне еще про enable_shared_from_this. Я вот подсмотрел типовую реализацию в Boost, и ничего сверхъестественного там не увидал. enable_shared_from_this<T> состоит из члена weak_ptr<T>, который инициализируется в глубинах конструктора shared_ptr<T>, который очевидно может разобраться, что T унаследован от enable_shared_from_this<T> и, соответственно, пойти ему поле перезаписать.
А теперь вопрос, почему есть std::enable_shared_from_this::shared_from_this, но нету std::enable_shared_from_this::weak_from_this, который бы просто вернул это поле как есть?
Constantine
Господа, объясните мне еще про enable_shared_from_this. Я вот подсмотрел типовую реализацию в Boost, и ничего сверхъестественного там не увидал. enable_shared_from_this<T> состоит из члена weak_ptr<T>, который инициализируется в глубинах конструктора shared_ptr<T>, который очевидно может разобраться, что T унаследован от enable_shared_from_this<T> и, соответственно, пойти ему поле перезаписать.
А теперь вопрос, почему есть std::enable_shared_from_this::shared_from_this, но нету std::enable_shared_from_this::weak_from_this, который бы просто вернул это поле как есть?
В С++17 добавили "прочитать weak" (кажется)
Matwey
Правда твоя, есть в C++17
Matwey
Ого, еще и поведение у shared_from_this поменяли в C++17. А то меня всегда беспокоило, что производные enable_shared_from_this нельзя создать руками (не внутри shared_ptr<> ), иначе shared_from_this() приводит к падению. А вдруг рука дрогнет?
Constantine
Constantine
Если они еще сделают что френдить для make_shared, вообще можно будет пользоваться
Wire
Народ, кто работал с boost::asio::deadline_timer? Странное наблюдаю: если вызывать вот так:
class Wrapper {
ioservice io;
deadline_timer timer;
public: Wrapper() : io(), timer(io){}
};
То на Винде у меня какой-то дедлок - и видно, что создается какой-то второй тред (хотя явно я это не делаю). На Линуксе тот же код работает без проблем. Компилятор mingw32. Воркэраунд — вынести создание timer из конструктора Wrapper... Кто-нибудь может объяснить, что просиходит?)
Matwey
Загадочно, учитывая, что создание таймера его не запускает.
Anonymous
Anonymous
Привет, родные братья сестры, нужна помощь по сипп, контроллер лютует грозится, надо обкашлять вопросики по памяти помогите плес
Anonymous
маякните когда можно задавать ответы
Vladislav
Привет, ну задавай)
Ostap ꑭ
https://www.engadget.com/amp/2018/04/09/nvidia-32-bit-os-support-drivers/
Vladislav
Maksym
На сях чистых не?
Vladislav
Maksym
В кернеле ещё обычно из стд либы мало что порторировано, если верить бывшим коллегам
Anonymous
Виндовый кернел это вещь в себе и к nvidia драйверам отношения не имеет. Могу глянуть, но думаю там тоже не везде чистый си
Vladislav
Anonymous
Vladislav
Danil
Или там только кернель модуль?
Vladislav
Да
круто) ты случайно не в курсе зачем там собирают либы с -fomit-frame-pointer?)
Vladislav
:( из-за этого и профайлить приложения, использующие их, сложнее)
Anonymous
А еще, ты скорей всего говоришь о чем-то связанном с cuda/dnn, а я этого не трогал и как у них что и почему не представляю
Vladislav
Александр
Александр
Александр
Александр
и переопределение new - как раз-таки типичный способ глобально поменять поведение
Александр
ed
Велосипед - согласен..
Но увы мне нужен полный контроль над выделением памяти..
std аллокаторы по моему вообще не о чём (слишком много писанины и переопределения, да и помимо аллокаций мне нужны свои контейнеры(ибо стандартные тоже не устраивают))
Опять же, да у меня тут прекрасно осознанное велосипедо-строение, но называть это костылями как минимум недальновидно..
ed
На самом деле меня прямо разочаровала реакция людей на вопрос..
Вроде бы c++ сообщество.. А меня тут понимаете ли за свой аллокатор осуждают :c
Maksym
никто тебя не осуждает