Задать вопрос
  • Есть разница, на низком уровне, между классом со статичными полями и глобальным экземпляром класса?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Нет разницы.

    Можно же проверить самостоятельно. Технологии нынче - все легко. Вот: https://godbolt.org/z/PKWPdY4nn

    Как видите, и то и другое компилируется в практически одинаковые инструкции:

    eax, DWORD PTR MyGlobalPool[rip+4]
    ...
    eax, DWORD PTR MyPool1::numOfAllocatedObjects[rip]


    И там и там просто загрузка какого-то статичного адреса глобальной переменной. Вообще говоря, в случае с глобальной переменной компилятор мог бы сдлеать и 2 действия: взять адрес переменной и прибавить смещение поля. Но он, как видите, достаточно умный, чтобы сделать все в одну инструкцию.
    Ответ написан
    Комментировать
  • Почему в WinAPI вместо русского языка выводятся иероглифы?

    @User700
    MessageBox может подключиться как MessageBoxA, требующую однобайтную кодировку; или как MessageBoxW для юникода. Префикс L объявляет юникодную строку. При компиляции нет предупреждений о приведении типов? Возможно настроено на использование MessageBoxA. можете указать явно MessageBoxW. Хотя нет, при такой ошибке не компилировалось бы.
    Может быть дело в том, в какой кодировке компилятор понимает файл исходного кода:
    https://qna.habr.com/q/525512
    Ответ написан
    Комментировать
  • Выводятся какие-то цифры и ошибка, что не так?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    При j == 7 куда обращается arr[j + 1] ?
    Ответ написан
    Комментировать
  • Выводятся какие-то цифры и ошибка, что не так?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Ошибка, если ее перевести, означает: вы вышли за границу массива arr.

    Смотрите внимательно, где вы к нему обращаетесь. Особенно на arr[j + 1]. Какие значения может принимать j? Какой размер массива и, соответственно, к каким индексам можно обращаться?
    Ответ написан
    Комментировать
  • Почему WinAPI выполняет синхронную запись?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    В мануале прямо написано, что асинхронная операция может выполниться и синхронно - тут уж как венда решит.

    Кстати, чем вам Boost::asio не угодил?
    Ответ написан
    4 комментария
  • Почему WinAPI выполняет синхронную запись?

    @User700 Автор вопроса
    Возможно, дело в этом https://docs.microsoft.com/ru-RU/troubleshoot/wind...

    Расширение файла
    Еще одна причина синхронного завершения операций I/O — это сами операции. На Windows любая операция записи в файл, который расширяет его длину, будет синхронной.

    Примечание

    Приложения могут сделать ранее упомянутую операцию записи асинхронной, изменив допустимую длину данных файла с помощью функции, а затем выпустив SetFileValidData WriteFile .

    Надо пробовать

    Но еще остаётся неясным в чём проблема с незаписью последней порции в режиме FILE_FLAG_NO_BUFFERING даже с учётом выравнивания всего и вся на 512; возможно в вызове CancelIO в close (хотя перед этим есть ожидание wait).
    Ответ написан
    2 комментария
  • Что можно попробовать сделать для восстановления жёсткого диска?

    nidalee
    @nidalee
    никто этот диск ни в какой специализированный дорогой сервис относить не будет
    Что можно попробовать сделать, чтобы диск запустился и хоть что-то с него попытаться вытащить?
    Ничего.
    Ответ написан
    Комментировать
  • Как правильно установить Qt Creator для всех пользователей компьютера?

    borisdenis
    @borisdenis
    Ленив и вреден...
    Часто при установке программа спрашивает ставиться для всех пользователей или только для текущего. Не знаю как это ПО, но по поведению очень похоже, что данное ПО установлено именно для текущего пользователя, поэтому для остальных пользователей не созданы ярлыки и т.п.
    Ответ написан
  • Mount drive Windows 10, как задать специфические символы в пароле?

    @pfg21
    ex-турист
    поставить %% тогда оно преобразуется в %

    разумнее б исключить %$& из пароля ибо интерпретатор пытается воспринять их как спец-символы.
    Ответ написан
    2 комментария
  • Если я подниму свой DNS сервер, я смогу регистрировать домены бесплатно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вы можете купить домен и раздавать/продавать его поддомены.
    Ответ написан
    Комментировать
  • Как сложить - 1/3 и 1/5 на с?

    Ты делишь целые числа.
    Попробуй так
    #include <iostream>
    
    int main()
    {
        double a, b, ab;
        a = 1.00 / 3.00;
        b = 1.00 / 5.00;
        ab = a + b;
    
        printf("%f", ab); // 0.53
    }

    И вместо long double - просто double, тк %f - это для double
    Ответ написан
    Комментировать
  • Как уменьшить используемую память?

    15432
    @15432
    Системный программист ^_^
    Если я правильно понял условие, то завести map, считать в нём количество каждого числа на входе, одновременно запоминая у кого максимум.
    Хранить все введенные элементы и тем более квадратично по ним бегать не нужно
    Ответ написан
    Комментировать
  • Чем отличается XEN от OpenVZ?

    @rPman
    Вот популярные системы в порядке понижения функционала:
    Xen — на порядок сложнее и функциональнее, имеет помимо режима паравиртуализации (как openvz) режим полной виртуализации (в т.ч. поддержка соответствующих фич процессоров), есть механизмы переброса железа внутрь виртуалки (например, поддержка не самых слабых intel видеокарт), снапшоты, миграция,… много много вкусных фич.

    VMWare — как и xen, сложен, наворочен, приправлен соответствующей инфраструктурой и хорошими забористыми ценами :) режима полноценной паравиртуализации не имеет

    kvm/qemu — полная эмуляция процессора (а так же виртуализация через поддержку процессорами), есть вкусности от 'старших братьев' вида миграция запущенной виртуалки по сети, переброса железа (сильно хуже поддержка чем xen/vmware) и т.п. можно считать бакэндом, так как GUI в идеалогии не имеет, оно пилится желающим

    VirtualBox — эмуляция процессора, в т.ч. использование поддержки виртуализации процессоров, идеален как отдельное десктопное приложение, миграции по сети нет, есть снапшоты, некоторые вкусности скрыты от GUI в коммандной строке

    OpenVZ — это работа всех машин на одном ядре (патчи к нему так и зовутся openvz), нет виртуализации, максимальная скорость (так как фактически это расширенный chroot с изоляцией). Для запуска модуля ядра на поклон нужно идти к хост системе и ее администратору (например tun/tap адаптер у firstvds дают по запросу)
    Снапшотов нет (но их реализуют через lvm), миграция есть, есть сброс состояния контейнера на диск и возобновление работы…

    Lxc — еще проще чем openVZ, нет даже грамотной изоляции (если подсуетиться, можно, имея рут в контейнере, выйти в хост систему с рутовым доступом), прямой аналог jail во freebsd, имеет смысл для хитрых сетевых конфигураций, тестов и т.п.

    Chroot — это даже не виртуалка, это просто простейшая изоляция в пределах файловой системы, подмена путей в вызовах функций работы с файлами.
    p.s. lxc называют еще 'chroot на стероидах'

    OpenVZ/lxc/chroot поддерживают почти полноценное каскадирование виртуалок (т.е. к примеру можно внутри контейнера openvz запустить kvm/virtualbox при наличии модулей, даже с поддержкой аппаратного ускорения)
    Ответ написан
    6 комментариев
  • Поясните пожалуйста bash скрипт?

    @RayHex
    1. https://tldp.org/LDP/abs/html/process-sub.html
    2. bash это интерпритатор, вы всегда можете вставить куски выражения, и посмотреть что они выдают, например:
    echo <(ls -1 .)
    /dev/fd/63

    3. Ваш код мягко говоря дурно пахнет, а по сути он вообще кривой и будет сбоить на файлах со спецсимволами или даже пробелами. Можно сделать проще и правильнее:
    shopt -s nullglob
    for f in my_temp_dir/*; do
        echo "$f"
    done

    nullglob нужен для случаев когда файлов совсем не будет, без него подставится строка со *, и это может вызвать ошибку в вашем коде.
    Ответ написан
    Комментировать
  • Как исправить и с чем связано stack smashing detected?

    includedlibrary
    @includedlibrary
    Офрмляйте код нормально, пожалуйста, с отступами. Массиву нужен размер, у вас же он равен нулю. Функция get_max ничего не возвращает, хотя заявлен тип int.
    Ответ написан
    Комментировать
  • No boot disk has detected + bootmgr вместе, как починить?

    QQQ-RRR
    @QQQ-RRR
    Привет, если я правильно понял, Вы "отсоединили" загрузочный диск, и подключили "другой". Верните обратно старый, проверьте физическое подключение, выставите порядок загрузки если нужно. Должно помочь
    Ответ написан
    Комментировать
  • Собрать пример CURL-приложения C++11 в MVS2019?

    Nipheris
    @Nipheris Куратор тега C++
    У вас проблемы с линковкой, не настроены или неверно выбраны import-библиотеки или статические библиотеки (зависит от того, как вы планируете линковать libcurl к своему проекту-примеру).
    Также возможно неверно настроены определения комплиятора - некоторые библиотеки требуют задания констант препроцессора при динамической, или наоборот, статической линковке. Например, libcurl требует настройки CURL_STATICLIB при статической линковке.

    Все пакеты установлены из пакетного менеджера VS

    Закопайте эти библиотеки, проект CoApp, который был посвящён идее использовать NuGet для нативных (С/С++) библиотек, умер почти сразу после своего рождения, на границе 2014/2015 годов. Это очень старые версии, к тому же. Практика показала, что NuGet в большинстве случаев не годится для нативных библиотек (не буду расписывать, почему).

    Используйте для C/C++ проектов нормальные пакетные менеджеры вроде Conan или, на худой конец, Vcpkg. Там это всё уже предусмотрено. Впрочем, это не отменяет необходимости понимания простейших ошибок компилятора/линковщика и его основных опций.
    Ответ написан
    1 комментарий
  • Работать в выходные или нет?

    @levsha9413
    Необходимо обязательно отдыхать в выходные, иначе выгорание неизбежно.
    Рабочие задачи - это непрерывный поток, неважно, черпаете вы из него пять дней в неделю или все семь, этот поток не закончится.
    А вы - да.
    Ответ написан
    Комментировать
  • Как преодолевается потеря мотивации в ИТ?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    - Жениться
    - Взять ипотеку
    - Родить парочку детей
    (вовсе не обязательно в такой последовательности :) )
    После всего оного мотивации будет - выше крыши! :)
    Ответ написан