Почему bitset обнуляется

127
13 февраля 2022, 14:00

Я хочу по битам считать определенную область памяти, первый вариант работает, второй - нет, хотя делает почти то же самое.

bitset<32> *readInt(unsigned int num) {
   bitset<32> *b = new(&num) bitset<32>;
   return  b;
}

int main()
{
    bitset<32> *a = readInt(12345);
    cout << *a << endl;
    // output: 00000000000000000011000000111001

    unsigned int num = 12345;
    bitset<32> *b = new(&num) bitset<32>;
    cout << *b << endl;
    // output: 00000000000000000000000000000000
    return 0;
}
Answer 1

Не работают оба варианта. Объект unsigned int не может использоваться для предоставления места объекту bitset<32>. Конструкция placement new должна создавать новый объект, дефолтный конструктор которого обнуляет все биты, а не считать что-то по битам. Функция readInt вообще возвращает битый указатель на локальную переменную.

Получайте доступ к object storage и вручную печатайте его содержимое по битам.

READ ALSO
Необходимо определить, может ли пара ферзей напасть на друг друга, если известны координаты 8 ферзей

Необходимо определить, может ли пара ферзей напасть на друг друга, если известны координаты 8 ферзей

Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били друг другаВам дана расстановка 8 ферзей на доске, определите, есть...

129
Jquery append элемента с несколькими классами

Jquery append элемента с несколькими классами

Как через jquery создать элемент с несколькими классами? Нужно получить что-то типа такого:

134
Не могу войти через adminer в базу

Не могу войти через adminer в базу

Помогите, кто знаетВхожу через adminer в mariadb, через root все работает

167