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

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    У вас массив внутри класса, класс - локальная переменная. Получается массив на стеке. На 4 миллиона ячеек. Но стек ограничен и вот он переполняется. Стандартного размера не хватает. Надо поднять размер стека опциями линкера.

    Или экземпляр класса создавайте в куче, через new, и храните в unique_ptr.

    А по коду: не используйте эту сишную арифметику указателей. У вас двумерный массив, вы и обращайтесь везде через 2 индекса в квадратных скобках. Так понятнее код будет.
    Ответ написан
    Комментировать
  • Про какую версию разговор и чего оно хочет от меня?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Есть подозрение что сервис, через который работает psexec (при подключении он его устанавливает) или не удалился по окончанию подключения или произошло что-то еще что мешает psexec работать
    попробуйте через sc (или powershell коммандлеты) остановить а затем удалить сервис (по моему он назывался PSEXESVC)
    sc \\remote stop PSEXESVC
    sc \\remote delete PSEXESVC

    а затем запустить вашу команду с psexec еще раз
    Ответ написан
    1 комментарий
  • Почему не удаётся освободить память в деструкторе?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Проблема вот в этой строчке:
    int get_num_from_BigInteger(BigInteger big_int){

    Тут у вас идет передача по значению. У вас создается новая BigInteger переменная, со значением переданной. Поскольку вы конструктор копирования нигде не определили, компилятор сделал его вам сам, и там он тупо копирует все данные класса, включая указатель arr.
    В итоге у вас получается два экземпляра класса, в каждом из которых указатель на один и тот же массив. Потом каждый из двух экземпляров в деструкторе вызовет free для одного и того же указатенля, вот и получается двойной free и креш.

    Вам надо руководствоватся правилом трех(пяти). Доопределите конструктор копирования. Вообще, вам бы стоило его запретить (= delete;), ибо копировать такие большие числа - это плохо. А в функции ваши передавайте BigInteger по константной ссылке.

    Ну и в других функциях та же самая поблема.

    И еще, в C++ не стоит использовать malloc/free, используйте new/delete. А еще лучше, используйте std::vector.
    Ответ написан
    Комментировать
  • Объясните суть Systemctl в ubuntu?

    @pfg21
    ex-турист
    в консольной команде первое слово - это имя програмки, которую запускаешь.
    остальные слова передаются програме в качестве параметров.

    соответственно systemctl status ufw запускает systemctl и передает ей параметры status ufw - получаем статус работы сервиса ufw.service от менеджера системы.
    а ufw status запускает ufw и передает ей параметр status - получаем "внутренний" статус работы непосредственно от ufw
    Ответ написан
    2 комментария
  • Можно ли как то связать два разных банка из разных стран в одном проекте?

    Wispik
    @Wispik
    Спрашивать у пользователя, хочет он оплатить российской картой или нет. И в зависимости от ответа перекидывать на нужный банк
    Ответ написан
    Комментировать
  • C++ iostream not found?

    @pavlik321
    Генератор случайных Q&A важных людям
    3 комментария
  • Как корректно вывести функцию в байтовом виде?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Я назвал 2 функцию не _end, а g и сработало. Возможно, gcc как-то по особенному интерпретирует это название - при дизассемблировании функции _end, даже не было.

    Но тебе уже сказали, что компилятор может сделать все, что угодно и гарантировать расположение/вид функций нельзя.
    Ответ написан
    Комментировать
  • Как быть с тестовыми заданиями при трудоустройстве?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    когда тебе говорят выполнить ТЗ, которое не является для тебя вызовом и занимает всего час времени, а потом не отвечают вообще - это довольно грустно

    Это действительно грустно, позор этим компаниям. Но боюсь, что сделать с этим вряд ли что-то можно. Разве что пытаться вежливо, но настойчиво переспрашивать фидбек.

    Стоит ли пытаться "удивить" проверяющего? Есть ли прок от того, что в задании, где просят написать коротенький код, я его дополняю, подключая celery, меняя базу данных с локальной на более релевантную, засовывая приложение в докер образ?

    Можно написать базовую версию, а потом сделать ветку и навертеть в неё сверху всякого, что показывает глубокое знание языка, владение абстракциями и шаблонами, знание тонкостей фреймворка, умение писать масштабируемые системы и т.д. и т.п.

    Стоит все эти техзадания публиковать и добавить ссылку на github в резюме, если она ещё не там.
    Ответ написан
    5 комментариев
  • Как считать из stdin русский текст и вывести его как wchar_t?

    @blecked88 Автор вопроса
    Проблема в итоге решилась так.

    #include <stdio.h>
    #include <tchar.h>
    #include <io.h>
    #include <fcntl.h>
    
    #define SZ 256
    
    int main(void)
    {
        int _ = _setmode(_fileno(stdin), _O_U16TEXT);
        _ = _setmode(_fileno(stdout), _O_U16TEXT);
    
        TCHAR input[SZ] = { 0 };
    
        _tprintf(L"Введите текст: ");
        fgetws(input, SZ, stdin); input[wcslen(input) - 1] = 0;
        _tprintf(L"Введенны текст: %s", input);
    
        return 0;
    }
    Ответ написан
    3 комментария
  • Почему может передоваться только 8 байт через сокеты клиенту?

    15432
    @15432
    Системный программист ^_^
    У вас там sizeof(get_buffer) стоит. Вы спрашиваете размер указателя, что равно 8. Таким способом можно указывать размер только статических массивов, для динамической памяти - только указывать конкретные значения
    Ответ написан
    1 комментарий
  • Какой протокол VPN выбрать для удаленки?

    @Drno
    SSTP \ ocserv
    Zerotier
    Ответ написан
    Комментировать
  • Как решить проблему с uwebsockets в С++ Visual Studio2022?

    @adg2004
    Congifuration Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions и туда вписать _CRT_SECURE_NO_WARNINGS
    Ответ написан
    2 комментария
  • Как обновить программу "ip" в Linux?

    @AlexVWill
    Насколько я помню ip
    (если мы конечно говорим про whereis ip )
    ip: /usr/bin/ip /usr/sbin/ip /usr/share/man/man7/ip.7.gz /usr/share/man/man8/ip.8.gz

    часть пакета iproute2, исходники которого лежат на www.kernel.org, что с ними делать я думаю вы сами знаете.
    Ответ написан
    3 комментария
  • Проблема с командой bash отказано в доступе. Как решить?

    paran0id
    @paran0id Куратор тега Linux
    Умный, но ленивый
    Он пытается распаковаться в /usr/local/bin, у вашего пользователя нет туда доступа, есть у root. Запускать непонятные скрипты из интернета от имени root - плохо.
    Ответ написан
    2 комментария
  • Как решать задачу?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Надо сделать несколько наблюдений: во-первых, нам без разницы, в каком порядке шары на каждом уровне - важны лишь количества там шаров всех 4 цветов. Во-вторых, если на каком-то уровне остались только белые шары - то мы этот уровень больше никогда трогать не будем. В-третьих, что бы мы не делали на одном уровне - это никак не влияет на другие уровни. Поэтому можно их все рассматривать независимо. Надо решить задачу для каждого уровня отдельно и просуммировать количество дней (и единицы, если на уровне можно что-то оставить).

    Рассмотрим теперь один уровень, который описан 4 числами a,b,c,d и нам надо оставить как можно больше шаров белого цвета (их d). За один ход мы можем приравнять к 0 одно из 4 чисел и вычесть по 1 из отсавшихся ненулвевых. Ясно, что нет смысла занулять d. Т.о. за 3 хода мы можем получть 0,0,0,max(0,d-3). Но, например, если у нас было 2 2 2 3, то занулив a и b мы уменьшениями на 1 зануляем и c. Т.е. для маленьких чисел имеет смысл подумать в каком порядке их занулять. Но мне лень даже думать как именно - ведь их всего 3 числа - можно тупо перебрать все 6 перестанвок и выбрать ту, в которой за наименьшее количество ходов мы их все занулим.
    Ответ написан
    6 комментариев
  • Почему от добавления функций помимо main() в начало кода ядро перестает работать?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему от добавления функций помимо main() в начало кода ядро перестает работать?

    смотри: ты собираешь образ kernel следующей командой:
    i686-elf-ld -Ttext 0x7E00 --oformat binary kernel.o -o kernel -e main

    а запускаешь следующей:
    ; Jump to the kernel's entry point
        JMP 0x0000:0x7E00

    как по-твоему здесь используется информация о точке входа -e main?

    Ответ
    никак, выполнение всегда начинается с начала образа kernel, куда выполняет переход начальный загрузчик; что там будет, то и начнёт выполняться. Эта информация даже никуда не записывается, потому что файл формата binary -- это тупо склеенные вместе загружаемые сегменты, там нет места для метаинформации. Если бы ты собирал ELF, то этот адрес был бы записан в поле e_entry заголовка ELF.

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

    @Zerg89
    rd /s "\\?\C:\full-path"
    Ответ написан
    Комментировать
  • Почему не работает программа на C++ с решением задачи об "Игре в жизнь"?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    У вас ошибка в логике: вы меняете поле отдельно в каждой клетке. И потом используете уже поменянные клетки для подсчета количества соседей в следующей клетке. Но в игре жизнь все клетки считаются параллельно.

    Для этого вам понадобится 2 массива map. Один для текущей итерации, и другой для следующей. Или массив должен быть не bool, а int, и там вы должны разными числами помечать живые клетки, которые умрут, живые клетки, пустые клетки и пустые клетки, которые родятся. В первый проход вы считаете соседей и помечаете клетки, а вторым проходом все изменения применяете.

    Кажется, из-за этого у вас там поле никогда не вымирает и программа не останавливается.
    Ответ написан
    1 комментарий
  • Почему программа заканчивается даже не начавшись?

    В Setup вы присваиваете gameOverStatus ноль, а потом в while проверяете его на равность единице (в комментарии пишете при этом противоположное).
    Естественно, 0 != 1, цикл не запускается и программа заканчивает исполнение.
    Ответ написан
    3 комментария