Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这是哪种std容器行为?_C++_Stl_Containers_Std_Stdvector - Fatal编程技术网

C++ 这是哪种std容器行为?

C++ 这是哪种std容器行为?,c++,stl,containers,std,stdvector,C++,Stl,Containers,Std,Stdvector,我正在尝试“破解”一个使用Visual Studio 2005编译的游戏(红色警报3,封闭源代码…)(需要MSVCR80.dll来玩) 我试着制作一个程序,显示我对手的单位列表。至于这一点,我首先需要找到一个指向我自己列表的(静态)指针,我可以在singleplayer上这样做 我有一些问题,因为我不知道我的静态指针是否真的指向我想要的东西 我注意到了这种行为:(通过查看add_单元代码更改了哪些地址): 如果一个单元尚未构建,则为其创建一个新地址(随机?),并将该值设置为1(该类型的单元数量

我正在尝试“破解”一个使用Visual Studio 2005编译的游戏(红色警报3,封闭源代码…)(需要MSVCR80.dll来玩)

我试着制作一个程序,显示我对手的单位列表。至于这一点,我首先需要找到一个指向我自己列表的(静态)指针,我可以在singleplayer上这样做

我有一些问题,因为我不知道我的静态指针是否真的指向我想要的东西

我注意到了这种行为:(通过查看add_单元代码更改了哪些地址):

  • 如果一个单元尚未构建,则为其创建一个新地址(随机?),并将该值设置为1(该类型的单元数量),但之前添加的单元的所有其他地址保持不变,因此,如果类型a的单元具有地址0x12345678,说明有多少类型a的单元,然后它不会改变,并且在整个游戏过程中保持可访问性
所以其他地址没有失效或是什么

这是添加地址的示例,突出显示的地址是第一个添加的地址:

什么类型的std::容器可用于此目的? 它当然不是一个向量,因为向量在插入新元素时会使所有其他地址无效,或者不是


编辑/更新: 到目前为止,我已经能够重建这个结构:

struct UnitsInfo
{
    DWORD * someptr_1_to_other_UnitsInfo_struct;
    DWORD * someptr_2_to_other_UnitsInfo_struct;
    DWORD * someptr_3_to_other_UnitsInfo_struct;
    int unkown_1;
    unsigned int Type;
    unsigned int Amount;
};

还有其他单位地址周围的一些东西,我需要了解它是如何工作的。然后我可以高效地创建所有内容。

似乎位于升序地址中。这看起来像是通过分配器将内容添加到任何容器中。我会猜测和侵入式链接列表中的对象位于某种分配器上


我希望这有帮助。

添加到向量并不一定意味着地址无效。此外,为了避免重新分配,我猜大小是预先固定的(IIRC限制为可以拥有的单元数,因此大小为200的数组就足够了)这些地址似乎分布不均匀,因此使用vector_start+(offset*元素)将不起作用:(这就是为什么我认为这不是一个std::vector,也可能是一个链表?它们有“任意”地址。(我认为它们在开始时是连续分配的,但当插入/删除元素时,它们将不再是连续的…)你不创建地址。你创建的对象存储在内存中的某个地址。我想,这些地址代表了对象的起始位置,其中包含了有关该单元的信息。我认为它们与存储这些对象所用的容器类型无关。嗯,经过进一步研究,我认为这是一个高级的l墨迹列表,现在我需要弄清楚它的结构,呵呵