首页 > 解决方案 > 将 char 指针存储到容器中

问题描述

我正在尝试存储char*定期更新的内容。

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

我尝试使用char* 向量,但所有元素都指向最后更新的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
}

我怎么能做到这一点?

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

解决方案


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

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

因此,假设您有一个 cPacket 类,其构造函数采用 char 指针,那么您可以编写

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


std:vector< cPacket > vPacket;

...

vPacket.push_back( cPacket( Packet ) );

或者,如果您的代码的其余部分需要一个指针向量

std::vector< cPacket* > vpPacket;

...

vpPacket.push_back( new cPacket( Packet ) );

推荐阅读