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

    jcmvbkbc
    @jcmvbkbc
    почему у меня выводится ошибка не найден идентификатор хотя он(вектор mBuffers) обьявлен.

    Не надо пересказывать своими словами что говорит компилятор, вставляй его вывод.
  • Время получения ICMP пакета?

    jcmvbkbc
    @jcmvbkbc
    "Выделенность" линии предполагает некоторые гарантии по её пропускной способности, потере пакетов и всякому такому.

    ky0, а ты думаешь, что у линии до марса таких гарантий нет? Так, на глазок ловят?
  • Время получения ICMP пакета?

    jcmvbkbc
    @jcmvbkbc
    Но в любом случае - это не "линия" связи. ... Тем более не выделенная


    Алексей Харченко, а если походить по определениям из какой-нибудь википедии (раз, два), то вполне себе выделенная и вполне себе линия.
  • Время получения ICMP пакета?

    jcmvbkbc
    @jcmvbkbc
    Не бывает "выделенных линий связи" такой длины - падение напряжения и т. п. передают привет.

    А всякие роверы на марсе привет не передают?
  • Почему выводится только первое слово из scanf() в printf() в Си?

    jcmvbkbc
    @jcmvbkbc
    OSMANOF, это означает "любые символы, до символа конца строки".
  • Правильно ли я понимаю?

    jcmvbkbc
    @jcmvbkbc
    Mercury13, бывает, но если при этом каждой мнемонике соответствует единственный опкод, то трансляция "мнемоника -> опкод" однозначная и может быть выполнена по таблице. В отличие от.
  • Почему не совпадают результаты sha1?

    jcmvbkbc
    @jcmvbkbc
    получаю ответы которые не совпадают...

    Ну вот я тебе привёл ответ, полученный с использованием стандартных инструментов, который совпадает с твоим. И чо?
  • Почему не совпадают результаты sha1?

    jcmvbkbc
    @jcmvbkbc
    а на втором этапе в онлайн сервисе я ввожу (c7 6f 17 f1 91 05 de 28 39 da b1 ea a2 a2 98 56 3d 67 df 21) выбрав пункт hex to sha1

    Dima Bсk, ты понимаешь, что понимание и реализация "hex to sha1" -- целиком на совести этого сайта. С текстом-то ошибиться гораздо сложнее.
  • Почему не совпадают результаты sha1?

    jcmvbkbc
    @jcmvbkbc
    Ну вот смотри, я пишу в консоли
    $ xxd -r | sha1sum
    0 c7 6f 17 f1 91 05 de 28 39 da b1 ea a2 a2 98 56
    10 3d 67 df 21
    8bb986c5259323914d0b68d0748430bf0cc31a63  -

    -- хэш совпадает с твоим. Это говорит мне о том, что и ты и я понимаем одинаково что ты делаешь.
    А вот как получить то что ты получаешь с сайта с твоими исходными данными -- я хз.
  • Найти сумму интервалов c++, вылазит ошибка?

    jcmvbkbc
    @jcmvbkbc
    Собственно в чем потенциально может быть проблема?

    Построй своё приложение с отладочной информацией (ключ -g компилятору и линковщику если линкуешь отдельным шагом) и дай санитайзеру самому сказать тебе, где проблема -- вместо /workspace/test+0x42590b он покажет тебе конкретно исходник и номер строки.
  • Как встроить dll в exe?

    jcmvbkbc
    @jcmvbkbc
    в каталоге bin только динамические библиотеки (dll) находятся...

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

    jcmvbkbc
    @jcmvbkbc
    пока fscanf() возвращает true.

    Dalp, fscanf возвращает не true/false, а количество успешно отсканированных полей либо EOF в случае достижения конца файла.
  • Как узнать количество чисел в файле txt?

    jcmvbkbc
    @jcmvbkbc
    Необходимо открыть файл, посчитать кол-во чисел, отделенных пробелом. Какие для этого функции используются?

    fopen, fscanf
  • Как найти полусумму 32-битных знаковых чисел?

    jcmvbkbc
    @jcmvbkbc
    Или у вас есть более красивое предложение?

    Конечно, есть идиома для этого:
    int64_t sv = ((uint64_t)uv ^ 0x80000000) - 0x80000000;


    А long long - стандартный 64-битный тип.

    Это ссылка 1) на вики 2) о с++. long long -- это "как минимум 64-битный тип".
  • Как найти полусумму 32-битных знаковых чисел?

    jcmvbkbc
    @jcmvbkbc
    Читайте ей по 4 байта 2 раза в char buf[4].
    ...
    (int)buf[3] << 24 | (int)buf[2] << 16 поставит на место 2 старших байта

    Не, не поставит. Вернее, не всегда. Примерно в половине случаев. А в другой половине случаев в верхних 8 битах окажутся единицы, а вся операция будет UB.

    Тип 64-х битных чисел - long long. Вам в условии посоветовали им пользоваться.

    int64_t же. Но если собирать числа сдвигами, то правильное 64-битное значение со знаком указанным выше способом не получится.

    Сложить 2 числа сами сможете?

    Нужно вычислить полусумму этих чисел, округляя полученный результат вниз.

    А тут ещё в операции деления будет загвоздка. Потому что стандартный оператор деления округляет к 0 а не вниз.
  • Парсинг строки не через strtok на СИ. В чем заключается ошибка?

    jcmvbkbc
    @jcmvbkbc
    res2001, санитайзер -- инструмент, он несовершенен, но его можно улучшать (что вы и сделали). Но как инструмент он куда мощнее valgrind'а, потому что ему доступна вся информация из исходного кода. Например на следующий код valgrind ведь даже не почешется, в отличие от asan:

    #include <string.h>
    
    int i;
    int j;
    
    int main()
    {
            void *pi = &i;
            char buf[8];
            void *pj = &j;
    
            memset(buf, 0, 16);
    }
  • Парсинг строки не через strtok на СИ. В чем заключается ошибка?

    jcmvbkbc
    @jcmvbkbc
    Почему не работает, если в else дописать free(buf)?

    Потому что у тебя по-прежнему переполнение буфера в этих местах (ты выделяешь strlen(buf), а надо на 1 байт больше):

    parsed_string[(*size) - 1] = (char *)malloc(strlen(buf));
                strcpy(parsed_string[(*size) - 1], buf);


    И чтобы два раза не вставать: опция компилятора gcc -fsanitize=address и программа valgrind могут тебе без нашей помощи говорить, где ты вылез за границы буферов.

    Например, для твоей оригинальной программы:
    $ gcc -fsanitize=address -g mem.c -o mem
    $ ./mem mem.txt 
    =================================================================
    ==14939==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000000074 at pc 0x7eff8b502550 bp 0x7ffc978328c0 sp 0x7ffc97832070
    READ of size 5 at 0x602000000074 thread T0
        #0 0x7eff8b50254f in __interceptor_strlen ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:301
        #1 0x55cda292992b in parse_string /home/jcmvbkbc/tmp/toster/mem.c:84
        #2 0x55cda2929492 in variable_processing /home/jcmvbkbc/tmp/toster/mem.c:55
        #3 0x55cda2929377 in main /home/jcmvbkbc/tmp/toster/mem.c:31
        #4 0x7eff8b2bd09a in __libc_start_main ../csu/libc-start.c:308
        #5 0x55cda2929219 in _start (/home/jcmvbkbc/tmp/toster/mem+0x1219)
    
    0x602000000074 is located 0 bytes to the right of 4-byte region [0x602000000070,0x602000000074)
    allocated by thread T0 here:
        #0 0x7eff8b543720 in __interceptor_realloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:105
        #1 0x55cda29296de in parse_string /home/jcmvbkbc/tmp/toster/mem.c:79
        #2 0x55cda2929492 in variable_processing /home/jcmvbkbc/tmp/toster/mem.c:55
        #3 0x55cda2929377 in main /home/jcmvbkbc/tmp/toster/mem.c:31
        #4 0x7eff8b2bd09a in __libc_start_main ../csu/libc-start.c:308
    
    SUMMARY: AddressSanitizer: heap-buffer-overflow ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:301 in __interceptor_strlen
    Shadow bytes around the buggy address:
      0x0c047fff7fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x0c047fff7fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x0c047fff7fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x0c047fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x0c047fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    =>0x0c047fff8000: fa fa fd fa fa fa fd fa fa fa fd fa fa fa[04]fa
      0x0c047fff8010: fa fa 00 fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c047fff8020: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c047fff8030: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c047fff8040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c047fff8050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
    Shadow byte legend (one shadow byte represents 8 application bytes):
      Addressable:           00
      Partially addressable: 01 02 03 04 05 06 07 
      Heap left redzone:       fa
      Freed heap region:       fd
      Stack left redzone:      f1
      Stack mid redzone:       f2
      Stack right redzone:     f3
      Stack after return:      f5
      Stack use after scope:   f8
      Global redzone:          f9
      Global init order:       f6
      Poisoned by user:        f7
      Container overflow:      fc
      Array cookie:            ac
      Intra object redzone:    bb
      ASan internal:           fe
      Left alloca redzone:     ca
      Right alloca redzone:    cb
    ==14939==ABORTING

    Вот это:
    READ of size 5 at 0x602000000074 thread T0
        #0 0x7eff8b50254f in __interceptor_strlen ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:301
        #1 0x55cda292992b in parse_string /home/jcmvbkbc/tmp/toster/mem.c:84

    как раз указывает на вызов strlen с буфером без 0-терминатора.
  • C++ или Си, на каком языке программы выполняются быстрее?

    jcmvbkbc
    @jcmvbkbc
    код на ассемблере выполнится быстрее чем на python

    Kaktys_DH, а вот бесконечный цикл на ассемблере выполнится быстрее чем на питоне, например?