c++ - 将字符指针存储到容器中

标签 c++ c++11 c++14 c++17

我正在尝试存储一个定期更新的 char*

我需要将它指向的数据存储到 C++ 中的容器中

我尝试使用 char* vector 但所有元素都指向最后更新的 char*

这是我的代码:

std::vector<const char*>Packets;
char* Packet;
void __declspec (naked) RecvCaller()
{
    __asm mov ecx, [ebp + 0x08]
    __asm mov Packet, ecx
    Packets.push_back(Packet);
    __asm jmp dwJmpBack
}

我怎样才能做到这一点?

最佳答案

我认为您不想存储指向 Packet 的指针,而是想存储 Packet 本身。

因此,您需要构造一个数据包 vector ,创建一个新的 vector 元素并将指向的数据复制到 vector 元素中。

所以,假设你有一个 cPacket 类,它的构造函数接受一个 char 指针,那么你可以这样写

class cPacket {
public:
cPacket( char* p )
{
// code to copy the data into attributes
...
}
};


std:vector< cPacket > vPacket;

...

vPacket.push_back( cPacket( Packet ) );

或者,如果您的其余代码需要一个指针 vector

std::vector< cPacket* > vpPacket;

...

vpPacket.push_back( new cPacket( Packet ) );

关于c++ - 将字符指针存储到容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52022027/

相关文章:

C++ - 使用模板公开返回 const 引用并私下返回非 const 引用

c++ - 如何正确找到 Heisenbug?

c++ - 如果我们使用参数构造函数,我们是否需要在 C++ 中提供默认构造函数?

c++ - 为什么不将 `std::initializer_list` 定义为文字类型?

c++ - 变量模板可以作为模板模板参数传递吗?

c++ - std::sort() 中的程序有时会崩溃,无法重现

c++ - 如何获取使用 malloc() 分配的内存块的大小?

boost::asio::basic_socket_acceptor::async_accept() 的接受处理程序中的 C++ boost::asio Variadic 模板运算符

c++ - 不可复制类型的复制列表初始化

c++ - gcc 的 std::bind 在哪里将参数复制到数据结构中?