Я хочу по битам считать определенную область памяти, первый вариант работает, второй - нет, хотя делает почти то же самое.
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;
}
Не работают оба варианта. Объект unsigned int не может использоваться для предоставления места объекту bitset<32>. Конструкция placement new должна создавать новый объект, дефолтный конструктор которого обнуляет все биты, а не считать что-то по битам. Функция readInt вообще возвращает битый указатель на локальную переменную.
Получайте доступ к object storage и вручную печатайте его содержимое по битам.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей