Ответы пользователя по тегу C++
  • Как организовать обработку большого файла?

    @res2001
    Developer, ex-admin
    Проще всего использовать файлы отображаемые в память, там уже за вас обо всем подумали.
    Ответ написан
    Комментировать
  • В чем ошибка в программе [векторы]?

    @res2001
    Developer, ex-admin
    Расстояние, думаю, все таки должно быть разностью, а не суммой.
    Сделайте отдельный цикл для суммы от 0 до size-1.
    И отдельный цикл для min/max от 1 до size-2. Перед началом цикла min = max = rast[0] + rast[1]. Ну и size должен быть > 2.
    else{} лишнее, не нужно засорять код. И так все очевидно.
    Ответ написан
    Комментировать
  • Что можно для найти для развития в языке c++, если до этого программировал на php, javascript, java?

    @res2001
    Developer, ex-admin
    Я бы сказал, что С++ любому не нужно, но Си нужно, если вы считаете себя программистом.
    И тут не важно ООП, оно в принципе везде более или менее одинаково.
    Важно понимание того как работает процессор с памятью и указателями, различными типами данных. А так же понимание, почему на интерпретируемых ЯП никогда не достичь скорости компилируемых (Си/С++) - для этого хорошо написать свой модуль для интерпретируемого языка, для того же PHP, например.
    Вместо Си можно поучить асемблер, даст то же что и Си, возможно, более глубоко все осознаете, чем с Си, но времени потратите больше.
    Ответ написан
    Комментировать
  • TCP. Можно ли ужимать ReceiveTimeout со стороны сервера до миллисекунд?

    @res2001
    Developer, ex-admin
    Отправляйте по UDP и не парьтесь с ответами - это же не критически важный функционал - дойдет, хорошо, сервер учтет, не дойдет - пофигу.
    Ответ написан
    Комментировать
  • Как работает генератор случайных чисел?

    @res2001
    Developer, ex-admin
    Просто при каждом вызове с помощью набора арифметических операций генерируют очередное псевдослучайное число. Важно не забывать инициализировать генератор с помощью вызова srand().
    Ответ написан
    Комментировать
  • Что лучше для новичка в программировании C или C++?

    @res2001
    Developer, ex-admin
    Учите плюсы, а Си подтянется, т.к. синтаксис один и тот же только без классов и шаблонов (и других штучек из последних стандартов). А нюансы можно оставить на потом.
    Си нужен, т.к. на нем огромное количество кода написано. Так или иначе, а системщику придется читать чужой код. То же ядро линукс, например, и т.п.
    Ответ написан
    Комментировать
  • Библиотека численных методов. Какой инструмент выбрать?

    @res2001
    Developer, ex-admin
    Даже странно такое сравнение. Если требуется эффективность, то Си/С++ без вариантов.
    Насчет ног - не так страшен черт. Пишите тесты, будьте внимательны с указателями и все получится.
    Ответ написан
    Комментировать
  • Кто-нибудь знает толковый/любой обозреватель исходных файлов?

    @res2001
    Developer, ex-admin
    По исходникам любая IDE в своем менеджере проектов умеет показывать дерево объектов, функций, типов. Та же студия, например.
    Ответ написан
  • Как выглядет передача данных по бинарному протоколу?

    @res2001
    Developer, ex-admin
    Вместо HTTP GET ..., шлете, например двоичную 1 - в первом байте пакета, пришлете в первом байте 2 - POST. Принимающая сторона, принимает не текст, а двоичные данные, анализирует сначала полученный первый байт, и дальше разворачивает остальные данные. Если что, пример не из жизни, придуман на ходу.
    В принципе разница с текстовыми протоколами не велика. Но бинарные протоколы гораздо компактней. Кроме того не нужно парсить полученный текст, из-за чего обработка пакетов, обычно, проще.
    Но, конечно, если снифер не знает протокола, то в перехваченных данных трудно будет разобраться без подготовленного инструментария. А кроме того сценарные ЯП, которые распространены в вебе, как правило с двоичными данными работают через жо...
    Ответ написан
    Комментировать
  • С++ как проверить, что функции delete,free не заботятся о физической очистке памяти после удаления?

    @res2001
    Developer, ex-admin
    Видимо вы имеете ввиду происходит ли фактическое освобождение памяти на уровне операционной системы при вызове delete и free?
    Не обязательно. В стандартной библиотеке есть свой менеджер памяти интерфейсом к которому являются new/delete/malloc/free. У этого менеджера памяти какой-то свой алгоритм работы и он не обязательно при каждом вызове запрашивает/возвращает память ОС. На сколько я знаю в стандарте никак не регламентируется этот вопрос, поэтому поведение менеджера памяти - целиком на совести разработчика стандартной библиотеки для вашего компилятора.
    Более того стандартный менеджер памяти можно заменить другим, они есть уже готовые. Можете написать свой собственный, такой как вам нужно.
    Если вы хотите построить на поведении стандартного менеджера памяти какую-то логику приложения, то не стоит этого делать, т.к. в следующей версии вашего компилятора реализация менеджера памяти может быть другая.
    Вообще не нужно приписывать дополнительный функционал стандартной библиотеке. Воспринимайте все что написано в стандарте буквально и ничего от себя не добавляйте.
    Ответ написан
    Комментировать
  • Особености функций malloc/calloc/new?

    @res2001
    Developer, ex-admin
    А вы документации не доверяете что ли?
    Забивает память нулями только calloc, о чем в доке написано.
    Проверено неоднократно.
    Чтоб проверить выделите массив intов, например побольше - несколько мегабайт, и ищите в нем не нулевые значения. Уверен, долго искать не придется.
    Ответ написан
    Комментировать
  • Как оптимизировать программу на с++?

    @res2001
    Developer, ex-admin
    Само решение задачи оптимизировать бесполезно, т.к. тут на столько все просто, что любые оптимизации дадут прирост в 1-2 процессорных инструкции, а это в любом случае будет меньше 1 млсек.
    Попробуйте исполнить ваш тест несколько раз и вычислить среднее время, если это возможно.
    Или вставьте в свою программу вычисление времени выполнения и больше не беспокойтесь по этому поводу: www.cplusplus.com/reference/ctime/clock/?kw=clock
    Ответ написан
    Комментировать
  • С какой книге по c++ рассказывается о создании библиотек(dll,so)?

    @res2001
    Developer, ex-admin
    По большому счету, создание библиотек отличается от создания исполняемого файла опцией компилятора.
    Ну и в библиотеке не нужно делать main, т.к. он находится в вызывающей библиотечные функции программе.
    Ответ написан
    Комментировать
  • Какова судьба MFC и C++?

    @res2001
    Developer, ex-admin
    С/С++ не выйдут из моды еще долго, у них своя область применения и там они практически вне конкуренции.
    MFC - не стоит тратить на нее время. Она уже 20 лет назад была похожа на неповоротливого монстра, не думаю, что с тех пор что-то изменилось в лучшую сторону. К тому же привязка к одной платформе и одному компилятору, в наше время - это большой минус. И, кстати, на сколько я знаю, в бесплатных версиях VS MFC нет.
    Ответ написан
    Комментировать
  • Как происходит линковка приложений?

    @res2001
    Developer, ex-admin
    1.обычно у каждого компилятора свой runtime. Для VC - это разные версии msvcrt.dll.
    2.Читайте на сайте разработчика компилятора. В основном это не сильно принципиально, разве что вы используете какие-то специфические плюшки, которые не описаны в стандарте, но есть в конкретном компиляторе и его стандартной библиотеке.
    3.runtime - это как правило стандартная библиотека + точка входа и завершения программы (а ваш main вызывается уже из runtime).
    4.Можно. Обычно стандартная библиотека поставляется как в виде динамической библиотеки, так и статической. Выбор какую использовать за вами, задается опциями компилятора.
    5.Не большой. Но тут лучше говорить не про оверхед, а про "написание программы на чистом" WinAPI/POSIX и других OS API. На сколько это трудозатратней по сравнению с использованием стандартной библиотеки.
    По собственному опыту скажу, что написание на чистом WinAPI довольно трудозатратное (и время затратное) занятие, затратнее примерно в 1.5 по сравнению использованием stdlib. Но у меня это был первый и пока единственный опыт, дальше, видимо должно быть проще.
    Ответ написан
    2 комментария
  • Как обновлять TCP сервер с подключенными клиентами?

    @res2001
    Developer, ex-admin
    Как в nginx - запускается вторая копия процесса уже обновленного, которая принимает новые соединения, а старые дообрабатывает старый. Старый, конечно, должен при этом закрыть слушающий сокет.
    Когда все соединения обработает, он сам завершается. Механизм сложный в реализации, но тут простого и не будет.

    Еще где-то видел такой подход : слушающий процесс и обработчики реализованы в отдельных библиотеках как плагины. Плагины можно загружать и выгружать на лету. При таком механизме становится довольно удобно обновлять приложение - можно обновлять только плагин.
    Ответ написан
    4 комментария
  • Можно ли сделать массив меток goto?

    @res2001
    Developer, ex-admin
    Возможно setjmp/longjmp это то что вам нужно?
    Ответ написан
    Комментировать
  • Corecrt.h file not found - Как решить?

    @res2001
    Developer, ex-admin
    Вы в тегах ставите Visual Studio, а компилируете gcc?
    Видимо, вы пытаетесь собрать свой хеловорд с помощью mingw?
    Тогда запустите сначала оболочку mingw - она обычно запускается стартовыми скриптами: "MinGW-w64 Win64 Shell" и такой же для x32 версии.
    Оттуда и компилируйте, а не из командной строки винды.
    Ответ написан
  • Не могу использовать функции из .c файла, хотя она объявлена в .h файле. что делать?

    @res2001
    Developer, ex-admin
    Не нужно в включать gd_filter.c!
    Просто добавьте его к компиляции:
    gcc CPPImageCorrector.cpp gd_filter.c -o CPPImageCorrector.exe -lgd.dll
    Ответ написан
    Комментировать
  • Как сделать разные цели в одном makefile?

    @res2001
    Developer, ex-admin
    Ну и сделайте так:
    ud-button:
    PROJECT_SOURCEFILES += ud-dag_node.c 
    DEFINES+=PROJECT_CONF_H=\"ud-button.project-conf.h\"
    CONTIKI = ../..
    CONTIKI_WITH_IPV6 = 1
    include $(CONTIKI)/Makefile.include
    
    ud-rpl_root:
    PROJECT_SOURCEFILES += 
    DEFINES+=PROJECT_CONF_H=\"ud-rpl_root.project-conf.h\"
    CONTIKI = ../..
    CONTIKI_WITH_IPV6 = 1
    include $(CONTIKI)/Makefile.include

    make запускать соответственно:
    make ud-rpl_root
    или
    make ud-button

    А для цели all можно написать так:
    all: ud-button ud-rpl_root
    Ответ написан