将`int *`转换为指向位集的指针时会发生什么

问题描述

我正在做一个简单的测试,以数字的二进制表示形式计算1的数量:

  int x;
  while (cin >> x) {
      bitset<32> xBitmap = {0};
      xBitmap = static_cast<bitset<32>>(x);
      std::cout << xBitmap.count() << std::endl;
  }

上面的代码创建了正确的结果,但是当我使用一个指向位集的指针时,会发生意外情况:

      bitset<32>* xBitmap = nullptr;
      xBitmap = static_cast<bitset<32>*>((void*)&x);
      std::cout << xBitmap->count() << std::endl;

此代码创建随机结果,每次使用“ count()”都会创建不同的结果。我猜这是内存泄漏吗?但是为什么会导致内存泄漏呢?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)