Задать вопрос
  • С++. при возвращении массива string::c_str() происходит что-то не понятное?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В онлайн компиляторе все норм

    lol.

    Я в твой код комментариев добавил, для ясности:

    char *  readLine() {
      std::string line = "";
      ...
      std::cout<< (char *)line.c_str()<<"\n"; // Response    - все норм
      return (char *)(line.c_str());
      // в этот момент line уничтожается, и вместе с ним становятся недействительными
      // указатели полученные функцией c_str()
    }

    Возвращай std::string, не мудри.
    Ответ написан
  • Как работают функции sleep?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как работают функции sleep

    Вообще есть два основных подхода -- busy wait (ожидание в цикле) и scheduler-based (с использованием планировщика). Который из них используется зависит от контекста и возможностей окружения: бывают контектсты, в которых планировщик недоступен (например, обработчик аппаратного прерывания в ядре ОС), бывает кооперативная многозадачность, при которой планировщик не может гарантировать, что процесс возобновит выполнение через заданное время, бывают задержки настолько маленькие, что обращение к планировщику не имеет смысла. В этих случаях используют busy wait. При наличии вытесняющей многозадачности и таймеров высокой точности для достаточно длинных задержек можно использовать планировщик. В ядре linux используются оба эти подхода.
    Ответ написан
    Комментировать
  • Как сравнить генераторы случайных чисел на криптостойкость?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    dieharder, как уже посоветовали в комментариях. Это стандартный набор тестов для проверки качества ГСЧ.
    Ответ написан
    5 комментариев
  • При создании экземпляра класса в методе и воз ращение происходит ошибка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert

    Socket* Socket::accept() {
                /*    ГДЕ то тут инициализирую   this->address = str_addr; // 127.0.0.1
               */
                return new Socket(client_sock_id);  
      }
      // ВЫЗЫВАЮ ЗДЕСЬ
      Socket *c = s.accept();
    // с->getAddress()// выходят русские буквы МММ....-штук под 100 или больше

    надеюсь что я что-то не правильно делаю.

    Ты задаёшь вопрос о поведении кода, но не показываешь сам код. Откуда нам знать, что это за класс Socket, что это за str_addr и как ты выводишь в том месте, где выходят русские буквы?
    Исправь сначала это.
    Ответ написан
    Комментировать
  • Функция recv взращает ошибку при работе с сокетом?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В моём случае recv взращает -1, что говорит о том что произошла ошибка, какая и почему?.

    Зря вы спрашиваете у нас -- спрашивайте у него. errno, perror, вот это всё.

    Хотя в данном случае всё очевидно:
    while(int s1 = accept(sock, 0, 0)) //принимаем соединения для работы с ними
        {
            int k = recv(sock, &buff, sizeof(buff), MSG_NOSIGNAL);

    -- новое соединение установлено на сокете s1, а recv читает из sock.
    Ответ написан
    Комментировать
  • Почему число не изменяется на противоположное?

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

    Это просто A = -A;, не нужно никаких условий.

    удвоить их.

    Это A *= 2;, то что у вас написано -- это возведение в квадрат.
    Ответ написан
    9 комментариев
  • Как сохранять файл в процессе запущенном из другого процесса?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как сохранять файл в процессе запущенном из другого процесса?

    Так же, как и в любом другом. Потому что, сюрприз, любой процесс запущен из какого-то другого процесса.

    в итоге все выполняется отлично в консоль выводится все верно, но файл не создается.

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Нужен ли ASSEMBLER специалисту по информационной безопасности?
    ...
    В интернете все разделились на 2 лагеря: одни говорят, что он устарел и на замену ему пришли высокоуровневые языки программирования...

    Нужен ли алфавит специалисту по информационной безопасности?
    ...
    В интернете все разделились на 2 лагеря: одни говорят, что алфавит устарел и на замену ему пришли эмодзи...
    Ответ написан
    3 комментария
  • Падает программа, как отладить?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    программа падает на первый взгляд совершенно рандомно
    Как выявить причину такого падения, какие средства использовать?

    Включить core dump (ulimit -c unlimited), собирать и анализировать дампы в отладчике.
    Ответ написан
    Комментировать
  • Возможна ли одновременная запись данных в один файл?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Два пользователя одновременно, с точностью до миллисекунд, сделали одно и то же действие — нажали кнопку отправки данных. Что произойдет — запишутся данные в файл или нет и почему?

    Зависит от того, как организована запись в файл, от ОС и от файловой системы. Например, на уровне стандарта POSIX гарантируется, что в случае, когда запись выполняется единственным системным вызовом write, а файл был открыт в режиме "для добавления", то запись должна выглядеть атомарно. Т.е. данные, записанные успешно завершившимся системным вызовом будут записаны в файл непрерывным участком. Однако, write в праве записать меньше данных, чем было запрошено (о чём он сообщит кодом возврата). Точно так же, для записи несколькими потоками или процессами в один расшаренный файл гарантируется атомарность записи и сдвига текущей позиции файла. Для других случаев (не-POSIX, не одним системным вызовом, не-O_APPEND не через расшаренный файловый дескриптор) таких гарантий нет.
    Для винды -- хз, есть ли там гарантии и какие, лень искать.
    Ответ написан
    Комментировать
  • Почему условие if ( a == a) может не выполняться для Embedded-разработки?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    float b;
    ...
    if (b == b)

    Не выполняется тогда и только тогда, когда в b -- NaN.

    Обоснование есть в стандарте: пункт стандарта C99 6.2.6.1:4 говорит:
    Two values (other
    than NaNs) with the same object representation compare equal, but values that compare
    equal may have different object representations.
    .
    Ответ написан
    Комментировать
  • Как в GDB остановить программу?

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

    ^C, или посылкой сигнала (kill <signal> <pid>) -- остановить.
    bt -- посмотреть, где остановилась.
    Ответ написан
  • Как получить доступ к img образу в KVM?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Но у меня при вводе команды:
    kpartx -a /path/to/guest.img
    Абсолютно ничего не происходит - вывод команды пуст,

    Добавьте -v в командную строку kpartx, чтобы стал не пуст -- и покажите, что выводится.
    Ответ написан
  • Не получается сортировка пузырьком. В чем проблема?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    for (b = sortArray.length; b != 1; b--){
          int1 = sortArray[b];

    Что скажете?

    Ошибка в индексации.
    Ответ написан
    3 комментария
  • Как получить данные при вызове программы из контекстного меню?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Пишу приложение на C++...
    как брать, при вызове программы с помощью контекстного меню, полный путь откуда вызывается эта программа ("--cd=%v.")

    Из параметра argv функции main.
    Ответ написан
    1 комментарий
  • Расскажите подробно про механизм #1 доступа к пространству конфигурации PCI?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    линк на osdev.org не кидайте, я как раз там и читал.

    Ок, вот тебе главное оттуда:
    Two 32-bit I/O locations are used, the first location (0xCF8) is named CONFIG_ADDRESS, and the second (0xCFC) is called CONFIG_DATA. CONFIG_ADDRESS specifies the configuration address that is required to be accesses, while accesses to CONFIG_DATA will actually generate the configuration access and will transfer the data to or from the CONFIG_DATA register.

    -- пишешь в первый порт, к какому адресу в конфиг-спейсе будет доступ, после чего пишешь или читаешь второй порт. В этом состоит механизм доступа #1 на x86.
    Понимания чего тебе не хватает?
    Ответ написан
    Комментировать
  • Как создать раздел в реестре с помощью С++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    что я сделал не так?

    Не проверил код возврата. Возможно, не запустил от администратора.
    Ответ написан
    Комментировать
  • Компиляция C++ из C++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как на C++ скомпилировать файл main2.cpp и выполнить его?

    #include <stdlib.h>
    int main()
    {
        if (system("g++ main2.cpp -o main2") == 0)
            system("./main2");
    }
    Ответ написан
    Комментировать
  • Как выделить память для строки неизвестной длины?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как это усовершенствовать?


    Из man scanf:
    An optional 'm' character. This is used with string conversions (%s, %c, %[), and relieves the caller of the need to allocate a corresponding buffer to hold the input: instead, scanf() allocates a buffer of sufficient size, and assigns the address of this buffer to the corresponding pointer argument, which should be a pointer to a char * variable (this variable does not need to be initialized before the call). The caller should subsequently free(3) this buffer when it is no longer required.

    Т.е.:
    #include <stdio.h>
    
    int main()
    {
      char *chars;
      scanf("%m[^\n]",&chars);
      printf("%s\n", chars);
    }
    Ответ написан
    Комментировать
  • Как перенести файлы по части имени?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    `*198*`
    ...
    8.0 Fanny och Alexander (1982).mp4: command not found

    в чем проблема

    Ты б хоть поинтересовался что разные кавычки означают, перед тем как их использовать. Обратные кавычки означают "выполнить команду записанную внутри и подставить её вывод". Не надо выполнять mp4.

    Как можно перенести?

    find -name '*198*' -print0 | xargs -0 -I{} mv \{} /home/fywy/task1/video/80x
    Ответ написан
    2 комментария