Ответы пользователя по тегу C++
  • Ошибка std::bad_alloc - из-за чего?

    @AM5800
    Если маленькие объекты выделяются, а большие нет. И при этом память точно не закончилась - то самая вероятная причина - фрагментирование кучи.
    Самый простой способ решить эту проблему - всегда компилироваться в x64.
    Ответ написан
  • Как откомпилировать функцию в исполняемый код без "связей"?

    @AM5800
    Вы можете получить вашу функцию в виде набора байтов, зная адрес начала и конца функции. С первым все просто. А вот второй... Никаких "честных" способох его получения я не знаю. Но можно, например, зная адрес начала функции, начать ее читать и попытаться найти ее эпилог. Но тут, как всегда в C++ нужно быть осторожным. Эпилог может зависеть от компилятора, его настроек и платформы. Да и сама функция может инлайниться, вызывать другие функции, которые после "копирования" будут недоступны и прочие прелести.

    Также можете посмотреть сюда:
    stackoverflow.com/questions/4156585/how-to-get-the...
    Ответ написан
  • Преобразование типов в си?

    @AM5800
    Отвечая на ваш вопрос об алгоритме: ни по какому.
    У вас здесь происходит каст указателей.
    То есть, в первом случае, у вас есть накоторая ячейка памяти, которая содержит число 37. Если на мгновение забыть о типах, то в этой ячейке лежит значение "...0100101"
    Когда вы берете ее адрес (&i) - вы получаете указатель типа int. После каста, вы получаете указатель типа float. Изменяется тип указателя, но не данные на которые он указывает. После разыменования и присваивания вы получаете переменную f, значение которой все еще равно "...0100101".

    Если же вас интересует именно устройство формата float. То, можно начать отсюда:
    en.wikipedia.org/wiki/Single-precision_floating-po...
    Ответ написан
    4 комментария