Задать вопрос
  • Почему пишет ошибка при чтении данных?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему в 93 строке (bptr = (schoolboy*)&a1;) пишет progress=<Ошибка при чтении символов строки>

    Я уверен, что пишет он это на самом деле вот здесь: cout << *bptr;, а происходит это потому что bptr указывает на объект, конечный тип которого -- class student. У такого объекта в его представлении в памяти нет никакого поля progress, поэтому код который пытается его вывести ведёт себя таким образом. Вообще это пример неопределённого поведения.

    как это исправить?

    Тут явно какая-то проблема в логике. Для начала надо понять, что ты вообще хочешь чтобы произошло.
    Ответ написан
  • Как увидеть код выполненный до breakpoint?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Возможно ли это?

    В gdb есть вот такая штука: https://www.sourceware.org/gdb/news/reversible.html
    Т.е. ответ для gdb -- возможно, но при определённой подготовке и с определёнными ограничениями.
    С другой стороны, во всяких coresight есть возможность записывать выполненные процессором переходы, но это нужна железка с поддержкой этой технологии и железка которая будет собирать эти логи.
    Ответ написан
    Комментировать
  • Как создать массив хендлов на MASM?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Для полноты картины не хватает определений hBmp, hbtm и hInstance.
    Косяк бросающийся в глаза сразу -- ты создаёшь таймер в обработчике WM_INITDIALOG, но нигде его не удаляешь и он продолжает тикать и после закрытия диалога.
    Ответ написан
    Комментировать
  • Почему вылетает программа?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Написал простую программу, которая висит, ожидая нажатие клавиши, но она не висит, а вылетает

    format PE console
    …
                    push str1
                    call [printf]
    
                    mov ah, 7
                    int 21h

    интересная попытка, но почему печать -- вызовом функции, а ввод символа -- вызовом досовского прерывания,
    если для печати тоже есть досовское прерывание?
    Если серьёзно, нельзя вызывать досовские прерывания из приложения win32. Ищи подходящую функцию win32 API.
    Ответ написан
    Комментировать
  • С чем связяна эта ошибка (SFML)?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Скачал библиотеку, подключил ее в параметрах проекта

    похоже, что не до конца подключил, потому что ошибка в том, что не найдены символы из этой библиотеки во время линковки.
    Ответ написан
    2 комментария
  • Как найти количество вхождений строки в строку, используя regex?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как сделать, чтобы строка, которую ищем, задавалась через regex?

    в posix есть вот такой интерфейс, в конце мануала есть пример.
    Ответ написан
    Комментировать
  • Как записать в переменную типа char строку неизвестной длины из файла?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    C++
    Нужно в двумерный массив char записать эти строки

    Если это С++, то строки -- это std::string, массив -- это std::vector, используй std::getline и например std::vector::push_back.
    Если это массив char, то это C и выделение памяти по мере надобности функцией realloc.
    Ответ написан
    3 комментария
  • Где утечка памяти?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    for (size_t i = iters.size(); i < listsize; i++) {
        iters.push_back(new iterator(typesize));
      }

    для такого кода создания код удаления должен вызывать delete а не просто деструктор, т.е.
    for (size_t i = iters.size(); i > listsize; i--) {
            delete *iters.back();
            iters.pop_back();
          }


    iterator::~iterator() {
      for (stream::stream* s : usedbystreams) {
        s->killstream(0);
      }
      free(pointer);
      usedbystreams.clear();
    }

    И опять, ты вызвал s->killstream(0), привело ли это к удалению объекта на который указывает s?

    Вообще существуют инструменты для отладки работы с памятью, для gcc это прекрасный -fsanitize=address который покажет тебе при завершении программы, где была выделена утекшая память.
    Ответ написан
    Комментировать
  • Как в Си вывести в консоль без записи в буфер?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Если я использую printf("asd"), то весь текст в кавычках будет выведен на экран и записан в лог файл. Вот такая команда: './a.out > file.log'.

    Здесь несколько несуразностей: 1) printf в ./a.out > file.log не выведет ничего на экран, всё будет перенаправлено в файл. но 2) сам printf об этом ничего не знает. Он выводит данные в поток стандартного вывода, куда они перенаправляются потом -- не его дело. 3) оператор > перенаправляющий вывод -- это инструкция командной оболочке как запускать программу, к самой программе отношения не имеет.

    Есть ли какая другая команда вывода, которая будет текст выводить только в терминал, без записи в файл?

    Есть! ./a.out, без каких-либо изменений в коде.
    Ответ написан
    4 комментария
  • По какой причине возникает ошибка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    По какой причине возникает ошибка?
    неопределённая ссылка на символ «dlclose@@GLIBC_2.2.5»

    -ldl отсутствует в команде линковки или указан слишком рано?
    Ответ написан
  • По какой причине происходит дубляж реализации?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    webderiverxx все файлы .h, видимо реализация написана на .h файлах

    В .h файлах можно написать и так, что вот этого всего не будет. Если ты нам покажешь этот webdriverxx.h мы наверно сможем подсказать, что там нужно изменить для этого.

    есть лок в виде проверки препроцессора, почему неколько реализаций возникает, не совсем понятно

    Ты если такое говоришь, то, видимо, не вполне понимаешь, для чего используется защита макросом препроцессора.
    Ответ написан
  • Как найти имя процесса НЕ содержащее в названии заданную строку при помощи bash?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    если нам нужны имена процессов с именем НЕ содержащим в названии подстроку

    grep -v
    Ответ написан
    2 комментария
  • Как сравнить два списка с помощью хеш-кода?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Значит, если будет стоять задача сравнить два списка (одинаковы ли они), то достаточно вычислить хеш двух списков? Или просто так совпало, что их хеши одинаковые?

    Если хеши получились разными то со 100% уверенностью можно сказать, что списки разные. Если хеши получились одинаковыми, то с высокой (в зависимости от качества хеширующей функции, но однозначно не 100%) степенью уверенности можно сказать, что списки одинаковые. 100% уверенность в равенстве списков с одинаковыми хешами даёт только поэлементное сравнение списков.
    Ответ написан
    1 комментарий
  • Как создать динамическую библиотеку, которая зависит от другой библиотеки?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    гугля, находил предложения с LD_LIBRARY_PATH=... . Но разве флаг -L при компиляции не служит той же самой цели?

    нет, не служит. -L говорит о том, где искать любые библиотеки во время линковки приложения. LD_LIBRARY_PATH говорит о том, где искать динамические библиотеки во время выполнения. Информация из -L со времени линковки нигде не сохраняется. Можно зашить в слинкованный бинарник пути к библиотекам, но это делается другими опциями (см. опцию линкера -rpath). Во время выполнения динамические библиотеки могут быть где угодно, не обязательно там, где они были во время линковки.

    Как создать динамическую библиотеку, которая зависит от другой библиотеки?

    вопрос, кстати, неправильный. Ты создал такую библиотеку. Если ты посмотришь в вывод readelf -d libwindow.so | grep NEEDED то там должна быть ссылка на libSDL. Твоя проблема в том, что сама libwindow.so не найдена.
    Ответ написан
    3 комментария
  • Как лучше сделать параллельный for?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В чем между ними разница и где какой предпочтительно использовать

    В том, что std::for_each -- это алгоритм из стандартной библиотеки C++, а tbb::parallel_for -- это часть intel Threading Building Blocks. Если проект не использует TBB, то выбор очевиден. Если использует, то у tbb::parallel_for несколько больше возможностей по управлению разбиением интервала на части и выполнением рабочих потоков.
    Ответ написан
  • Как rsync сжимает при передаче данных?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Не будет ли он на сервере создавать какие то архивы?

    Нет. rsync -z сжимает на лету.
    Из man rsync:
    --compress, -z
                  With this option, rsync compresses the file data as it is
                  sent to the destination machine, which reduces the amount
                  of data being transmitted -- something that is useful over
                  a slow connection.
    Ответ написан
    Комментировать
  • Есть ли хорошие книги для глубокого изучения Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    понять работу ядра Линукс

    Порекламирую в очередной раз свой список: https://qna.habr.com/answer?answer_id=392065#answe...
    Ответ написан
    1 комментарий
  • Почему не компилируется макрос после перехода с visual studio на linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему не компилируется
    НАЗВАНИЕ_КЛАССА ## ::
    error: pasting "Журнал" and "::" does not give a valid preprocessing token

    потому что не нужно эти токены склеивать, им будет хорошо и по отдельности. Просто выкинь ##.
    Ответ написан
  • Почему не компилируется макрос?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему не компилируется макрос?

    #define НФлагИнициализации(НАЗВАНИЕ1, НАЗВАНИЕ2) \
        Определение2Названия(НАЗВАНИЕ1, НАЗВАНИЕ2) ## флаг_инициализации


    error: pasting ")" and "флаг_инициализации" does not give a valid preprocessing token

    потому что ты думаешь, что сначала выполнится подстановка макроса Определение2Названия, а потом к результату будет приклеен флаг_инициализации, в то время как на самом деле сначала препроцессор делает подстановку НАЗВАНИЕ1 и НАЗВАНИЕ2 и приклеивает флаг_инициализации к скобочке, после чего рапортует тебе о том, что полученный результат выглядит не очень.
    Чтобы заработало тебе прийдётся тащить ## флаг_инициализации внутрь Определение2Названия.
    Ответ написан
  • Моя программа не грузиться на VB и в BIOS не отображается SANDISK?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    У тебя тут три разных вопроса.
    Моя программа запускается в bosh но не реагирует на прерывания клавиш


    А какую реакцию ты ожидаешь? Введённый символ ты не печатаешь, si ты не перезагрузил, так что puts_loop загружает из памяти следующий 0 и тоже ничего не печатает. Можно сделать так чтобы увидеть, что int 16h таки работает:

    keyboard_loop:
            mov ah, 0
            int 16h
            mov ah, 0Eh
            int 10h
            jmp puts_loop


    iso образ созданный dd не запускается в VB

    А почему ты думаешь, что из mbr можно создать iso с помощью dd? Его вообще-то надо в правильное место поместить, не абы куда. Например это можно сделать так: mkisofs --no-emul-boot -o test.iso -b test.bin . где test.bin -- это твой бинарник бут-сектора.

    а загрузочная флешка не отображается в BIOS

    Это видимо следствие из того, как ты сделал iso который закатал на флэшку.
    Ответ написан
    Комментировать