• Член класса/структуры типа uint8_t * или int8_t *, оптимизация?

    @res2001
    floppa322,
    а если у меня, например,

    Когда это происходит в пределах одной функции, то компилятор справится с этими зависимостями и оптимизирует там где можно и не оптимизирует там где нельзя.
    Но компилятор не может гарантировать, что параметры функции не ссылаются на одну область памяти, поэтому генерирует код без оптимизаций. Указывая restrict вы гарантируете компилятору от себя, что пересечений по памяти не будет и компиялтор начинает резвится как может.
    я этим просто обещаю компилятору, что именно сам this не буду менять

    restrict относится к памяти на которую ссылается указатель, а не к самому указателю.
    Так что в моем сообщении выше "закэшировать this в регистре" - не правильно. Компилятор может кешировать значение this->buffer из вашего примера, в этом случае убирается лишняя команда чтения buffer, о которой вы писали - будет использована ранее сохраненная в регистре информация.

    Тёмная материя :)
  • Член класса/структуры типа uint8_t * или int8_t *, оптимизация?

    @res2001
    floppa322, Это говорит компилятору, что других указателей, ссылающихся на ту же область памяти, что и this в функции нет. Поэтому он может уверенно закэшировать this в регистре и не перечитывать его каждый раз.
  • Почему мой вектор не работает со строками?

    @res2001
    Смесь украинского и немецкого в коде, это еще круче, чем код на русском :-)
    if(arr == nullptr){
                delete[] arr;

    arr и так nullptr, зачем вы его еще освобождаете? Для закрепления результата?
    В log() при первом вызове drauflegenZurück происходит обращение к нулевому элементу vorü. При этом память в vorü не выделена и в этом указателе содержится какое-то случайное значение. Поэтому происходит обращение к невыделенной памяти и программа падает.
    Во первых в конструкторе инициализируйте vorü = nullptr, во вторых в log() перед выводом проверяйте не равен ли указатель на массив nullptr и только после этого выводите.
  • Как через cmd и терминал удалить из папки все файлы, кроме выбранных?

    @res2001
    Damian Lewis,
    "Недопустимая попытка перехода на метку пакетного файла извне этого файла."

    Этот код точно надо запускать из батника, т.к. тут многострочник.
    Я там ошибся немного (один знак процента у переменной цикла, вместо двух), код поправил.
  • Как через cmd и терминал удалить из папки все файлы, кроме выбранных?

    @res2001
    Там вам надо еще удалить файлы размером меньше 5Мб.
    Получить размер файла можно в цикле for /f, используя модификатор для переменной цикла %%~za. Но в вашем случае проще это сделать через процедуру - в нумерованных параметрах процедуры то же работают модификаторы.
    Примерно так:
    for /f "tokens=* delims=" %%a in ('dir /b C:\Test\*') do (call:del5mb "c:\Test\%%~a")
    goto:eof
    
    :del5mb
    if %~z1 lss 5242880 (del "%~1")
    exit /b 0
  • Как через cmd и терминал удалить из папки все файлы, кроме выбранных?

    @res2001
    Damian Lewis, Я так и предполагал.
    Надо просто добавить путь c:\test к имени файла в команде удаления:
    del "c:\test\%%~a"
  • Как изолировать приложение внутри RDP сессии?

    @res2001
    Попытайтесь понять как именно программа обнаруживает, что она уже запущена.
    Вы уже выяснили, что это явно не чтение списка процессов, т.к. при переименовании exe, ничего не меняется. На самом деле это дурацкий способ и никто так не делает.
    Другие варианты: программа создает какой-то внешний именованый объект, который сама же при старте проверяет на наличие. В самом простом случае это может быть файл/каталог или ключ в реестре. Из других вариантов, например, именованные каналы ну и что там еще в винде может быть именованым. Или, например, открытый сетевой порт для прослушивания.
    Самый простой вариант, который приходит в голову - это файл, который эксклюзивно захватывается при старте, или именованный канал.

    Если получится, то, возможно, появятся идеи, как это обойти.

    Можно начать с мониторинга обращений к файловой системе и мониторинга реестра. Соответствующие утилиты есть в комплекте утилит sysinternals, который можно взять на сайте микрософт.
  • Как через cmd и терминал удалить из папки все файлы, кроме выбранных?

    @res2001
    Damian Lewis, 1. укажите полный путь к file.txt.
    2. посмотрите в каком формате dir выдает свой вывод, возможно он обрезает начало пути и соответственно, если батник не в каталоге с файлами, то файлы не найдутся.

    В общем, когда надо отвязаться от текущего каталога, нужно везде использовать полные пути.
  • Как убрать смещение символов ASCII из-за изменения разрешения окна консоли?

    @res2001
    Quark, Могу уточнить: на каждой итерации узнаете размер окна и форматируете вывод под текущие размеры, так что бы количество символов в каждой выводимой строке умещалось в оконную строку.
    Можно сделать проще - на каждой итерации принудительно задавать нужные вам размеры окна, но это так себе вариант.
  • Как через cmd и терминал удалить из папки все файлы, кроме выбранных?

    @res2001
    Damian Lewis, Эту конструкцию надо запускать из батника. Если запускать из командной строки, то нужно перед а указывать один знак процента %a, а в батнике - 2.

    Вместо del %%a, можете пока написать echo del %%a и проверьте вывод, потом echo уберете.
    Вместо %%a в команде del, можно использовать "%%~a" (вместе с кавычками), так будет корректно обрабатывать длинные имена с пробелами.
    Так же можно убрать круглые скобки вокруг команды del, но это только для случая, если в теле цикла будет только одна команда в той же строке.

    В целом все выглядит правильно для запуска из батника, но у меня по прежнему нет винды :)
  • Xeon 2244G поддерживает Регистровую память?

    @res2001
    Есть какие-то сомнения?
    Что вы понимаете под регистровой памятью?

    Вообще у всех процессоров есть регистры (регистровая память). Именно на них выполняются ВСЕ операции и только потом результаты складываются в кэш и ОЗУ. Никогда не слышал о процецессорах без регистров.
  • Как отсортировать дробную и целую часть числа в C++?

    @res2001
    Евгений Шатунов, Точно, есть же modf. Проклятый склероз :)
    Анатолий Плешков,
    А как совместить дробную с целой, что бы было правильно отсортировано, допустим если введётся 3 пятёрки в разный момент и одна из них будет целым числом?

    Да не надо ничего совмещать.
    В std::qsort, ты, кроме массива, должен передать еще и функцию сравнения. Функцию сравнения пишешь сам и там реализовываешь все нюансы сравнения: выделяешь целую часть, целые части сравниваешь "по возрастанию", если целые равны, то сравниваешь дробные "по убыванию" и возвращаешь правильное значение.
    В std есть и другие сортировки, там принцип такой же.
  • Есть ли бесплатный аналог C++ Builder?

    @res2001
    Дмитрий X,
    мучения с установкой, ни черта не работает, откомпилировать, хрен его знает как

    Не знаю какие у тебя мучения с установкой, ну да ладно.
    В Qt подход отличается от подхода в embarcadero.
    Qtcreator - это просто IDE - это только IDE, т.е. текстовый редактор для программистов. В нем нет встроенного компилятора, и даже в нем нет Qt (для использования в своих проектах), хотя сам Qtcreator написан с использованием Qt.
    Компилятор надо ставить отдельно, зато любой на выбор, хочешь gcc или clang на линукс, или то же самое на винде под mingw/msys, хочешь микросовтовский компилятор или интел.
    Qt, если надо ставишь отдельно. Не будешь использовать Qt - не ставь, можешь вместо Qt под Qtcreator использовать для GUI wxWidgets, например.
    Но если будешь использовать Qt, то можно будет и формы рисовать и т.п.
    Т.е. qtcreator - это универсальный комбайн, его можно использовать практически на любой платформе с любым компилятором, а в билдере ты связан по рукам и ногам навязанной библиотекой, компилятором и средой разработки.
    Согласен, это довольно удобно для старта. Но это же тебя и ограничивает в дальнейшем развитии.
  • Statements внутри списка инициализации конструктора?

    @res2001
    floppa322, Если это статический метод Example/ExtremelyHeavyObjectBuilder/ExtremelyHeavyObject, то можете так делать.
    В случае статического метода ExtremelyHeavyObjectBuilder/ExtremelyHeavyObject требуется указать класс, т.е. будет что-то вроде ExtremelyHeavyObjectBuilder::createObj().
    Так же createObj может быть и свободной функцией.
  • Есть ли бесплатный аналог C++ Builder?

    @res2001
    Дмитрий X, Стоит разобрабться, потому что билдер практически никому на рынке сейчас не нужен. А Qt программисты востребованы. Просто посмотрите вакансии на хх.
    Купите книжку :)
  • Как написать многопоточность для своего ядра?

    @res2001
    Qreen, Я вовсе не считаю себя экспертом. Пришлось погрузиться в тему низкоуровневой работы с железом около 1.5 лет назад. Решал определенную задачу. Не настолько сложную, как написание ОС, но у меня ушло пол года. До этого никогда на таком уровне не работал.