首页 > 解决方案 > 为什么我不能使用指向字符数组的指针来填充向量?

问题描述

所以对于下面的代码片段,我一直在调试器中,当我打印 dataPtr 指向的内存值时,我可以看到它有值。但是,在循环执行后,如果我打印 dataStream 的值,它全是 0。知道为什么我不能从指针填充向量吗?

  std::vector<uint8_t>* dataStream = new std::vector<uint8_t>();
  uint8_t* dataPtr = udpPacket->getData();

  for (int i = 0; i < head->m_cb; ++i) {
      dataStream->push_back(*(dataPtr + i));
  }

编辑:我附上了正在发生的事情的屏幕截图,以明确我在做什么。我是 C++ 新手,所以也许我调试错了? gdb变量打印截图

标签: c++stdvector

解决方案


感谢评论,似乎用范围初始化向量解决了这个问题!解决方案是使用

std::vector<uint8_t>* dataStream = new std::vector<uint8_t>(dataPtr, dataPtr + head->m_cb);

而不是一个循环来填充向量


推荐阅读