• Чем опасно переполнение статического массива в C?

    @res2001
    Developer, ex-admin
    Посмотрите на код ниже:
    char a[5];
    int b = 0;
    a[5] = 'a';

    И ответьте на вопрос:
    1.Куда произойдет запись в последней строке?
    2.Программист действительно хотел именно этого?
    Учитывая, что память под стеком уже выделена ОС, то никакой ошибки при этом не происходит. Ошибка проявится где-то дальше по ходу выполнения программы, где будет использовано значение переменной b или производных от нее. Отловить подобные ошибки бывает достаточно трудно, т.к. причина ошибки и место проявления ошибки может быть сильно разнесено по коду.

    С динамической памятью все примерно то же самое, за исключением того, что теоретически выделяется только запрошенное количество памяти, поэтому выход за пределы сразу же вызовет аппаратное исключение.
    Но практически это обычно не так, т.к. обычно ОС выделяет память минимум в 4Кб (размер страницы памяти), а дальше выделенная память поступает в распоряжение менеджера памяти (malloc/free). Поэтому будет ошибка или нет зависит от реализации менеджера памяти, от количества выделяемойпамяти и т.п.
    Если не произойдет исключения, то возможно повредятся (перезапишутся) данные менеджера памяти и дальнейшие операции с памятью будут не правильными. К чему это может в итоге привести - трудно предугадать, но ясно, что ни к чему хорошему.
    Так же возможно, что никакие данные не повредятся, это вероятно еще хуже - вы думаете что программа работает нормально, но в дальнейшем вносите изменения в код и все разваливается хотя вроде бы изменения корректные. Убираете изменения - все опять хорошо. Вы думаете, что проблема в изменениях, а на самом деле нет.

    Для поиска подобных ошибок обычно используют инструменты типа valgrind memcheck
    Ответ написан
    Комментировать
  • Где ошибка в коде и как ее исправить?

    fzfx
    @fzfx
    18,5 дм
    что вы уже успели сделать для того, чтобы исправить ошибку самостоятельно, Валерия? тут, конечно, бывают мужики, которые не обломятся размотать вашу маляву, но чёткой братве, которая в крестах чалится не первый год, шквариться об такие большие телеги без какого-либо дополнительного информационного подогрева с вашей стороны западло.
    а пока, исходя из предоставленной информации, в общем случае я бы предложил заменить устройство кодогенерации.
    Ответ написан
    8 комментариев
  • Какие распространенные Pet-проекты существуют для C++?

    maaGames
    @maaGames
    Погроммирую программы
    На С++ можно написать практически всё, что захочется. Например, интерпретатор скриптов условного Python.
    Ответ написан
    Комментировать
  • Как правильно спроектировать GUI приложения, написанного на питоне?

    Zoominger
    @Zoominger Куратор тега Python
    System Integrator
    не лучше ли сделать на MS Visual Studio простое диалоговое окно, которое будет по нажатию на каждую кнопку запускать exe, сконвертированное из питоновского py модуля с разными параметрами командной строки


    Каких только извращений не накрутят, лишь бы PyQt не осиливать.
    Ответ написан
    5 комментариев
  • Если переехать с виртуального хостинга на vps, сайт станет быстрее?

    CityCat4
    @CityCat4 Куратор тега Сетевое администрирование
    //COPY01 EXEC PGM=IEBGENER
    Может быть. А может быть и нет.

    VPS - это целый сервер (ну или как минимум пол-сервера - если угораздило OpenVZ-тариф взять). И на него нужно все самому поставить, все самому настроить - и собственно веб-сервер, и БД, и PHP, и все-все-все прочее.

    Плюсы: Можно поставить все это тех версий, которые считаешь нужным (в пределах пакетной базы дистриба)
    Минусы: Все это нужно уметь настраивать :)

    Плюсы: Можно подобрать тариф со сносным железом
    Минусы: Но он может оказаться достаточно дорогим
    Ответ написан
    4 комментария
  • Как определять сложность алгоритма?

    @Zolg
    Какая сложность алгоритма в О нотации будет для сложения/умножения матриц?

    Умножение матриц - не алгоритм, а операция.
    Алгоритм конкретный способ ее реализации.
    Сложность 'наивного' алгоритма умножения - O(n^3)
    Сложность, например, алгоритма Штрассена O(n^2,81)

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

    ps:
    'вычислительная сложность' показывает только отношение того, насколько дольше будет вычисляться алгоритм, при увеличении размера входных данных. но совершенно ничего не говорит о объеме вычислений в абсолютных цифрах.
    многие 'быстрые' алгоритмы на малых размерах входных данных (в абсолютных цифрах) проигрывают 'медленным': да, количество вычислений с ростом n растет медленней, но вплоть до какого-то n самих вычислений больше
    Ответ написан
    Комментировать
  • Какие вопросы полезно задавать старшим разработчикам?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    "Я всё сделал. Что дальше?" (шутка)

    "Я думаю сделать так (показываете схему того, как Вы поняли задачу), верно?"
    "Я с этим не сталкивался. С чего мне начать?"
    "Я хочу оптимизировать (показатель и место оптимизации). Что скажете?"
    "Пытаюсь разобраться... Читал... Делал... Не получилось. Что я упустил?"

    И самое страшное:
    Которые вы бы хотели, чтобы Вас спрашивали, но высказать напрямую ваше желание вы не можете :)))
    Потеря коммуникации - потеря времени и средств!
    Ответ написан
    Комментировать
  • Как сделать белым ip-address на VMware?

    Zoominger
    @Zoominger Куратор тега Компьютерные сети
    System Integrator
    Настройте сетевое подключение мостом и пробросьте порты с роутера на виртуалку.
    Понятно? Погуглите или объяснить?
    Ответ написан
    7 комментариев
  • Интерактивный курс по математике на русском?

    Zoominger
    @Zoominger Куратор тега IT-образование
    System Integrator
    Интуит: https://www.intuit.ru/studies/courses/107/107/info

    Бесплатно, понятно, на русском, в конце даже бумажку дают.
    Ответ написан
    1 комментарий
  • Правда ли, что сейчас так сложно найти работу?

    Zoominger
    @Zoominger
    System Integrator
    Сложилось впечатление, что рынок очень сильно переполнен

    Верное впечатление.

    А как при таком раскладе, ищут работу люди ниже уровня сеньора?

    В целом, страшно только в сфере веба, нормальные программисты ищут работу относительно легко.

    Может уже прошли те золотые it времена

    Да. Теперь это бизнес.

    весь хайп о "молочных реках и кисельных берегах" выгоден только вайтишным курсам?

    Да.
    Ответ написан
    17 комментариев
  • Одновременное обращение к нескольким работодателям: так можно?

    Zoominger
    @Zoominger
    System Integrator
    Так нужно.
    Ответ написан
    Комментировать
  • Есть актуальные книги по Си?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    Бен Клеменс - Язык С в XXI веке
    Принц, Кроуфорд - Язык C
    Стивен Прата - Язык программирования C
    Хэзфилд, Кирби - Искусство программирования на C
    Ответ написан
    1 комментарий
  • Как вызвать функцию другой программы на прямую (без API)?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Assembler
    Седой и строгий
    Люто сложная задача. В Windows можно попробовать с помощью CreateRemoteThread создать поток в адресном пространстве целевого процесса, с помощью SetThreadContext напихать в регистры параметры функции, а потом выполнить переход на её адрес. Правда, адрес надо ещё как-то узнать. Ну, и подозреваю, что у любого антивирусника от этого случится истерика.
    Ответ написан
    Комментировать