C++矢量+数组,矢量有不存在的数据
C++ Vector + Array, vector have inexistent data
我正在开发一个程序,我有一段代码:
struct Point{
int x, y, map;
}; // Portal Position
struct HPortal{
Point startMap, targetMap;
int MapTitle, PortalType;
}; // Portal Struct
std::vector<HPortal*> Portals[20001]; //Portal Array, total 20001 maps
但它让我在"随机"接种中出现错误。
我在VS调试器中看到数组有很多数据。我没有初始化它们(出于测试目的,我只使用第一个映射中的一个门户)。
我搜索了一点,我认为var太大了,程序不尊重数组的空间并覆盖它。
我该如何解决这个问题?
您正在堆栈上创建一个由20001 std::vectors组成的数组。你知道吗?你确定你不想要吗
std::vector<HPortal*> Portals(20001); // holding x HPortal POINTERS
或
std::vector<HPortal> Portals(20001);; // holding x HPortals
在第一种情况下,堆栈上有一个std::vector<HPortal*>
数组,这是一个非常有限的ram,尽管一个微小的测试样本显示堆栈上只需要大约240kb的ram。但是,它可能仍然是一个问题,这取决于堆栈的其余部分。如果使用std::vector< std::vector<HPortal*> > Portals(20001);
,则会在堆上创建相同数量的元素(能够容纳更多的元素)。
要检查代码的某些部分是否做了任意的事情并覆盖程序/内存的其他部分,您提供的代码无法检查这些部分。
我解决了这个问题,删除了[20001];现在我查看每个var,如果Portal->startMap.map是相同的播放器。我看到我的VS用所有向量数组完成了"损坏"的内存,我需要打印调试以获得信息:i
相关文章:
- 我们可以访问一个不存在的联盟的成员吗
- C++:对不存在的命名空间使用命名空间指令
- g++ 说函数不存在,即使包含正确的标头
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- C++ 尝试在不存在的构造函数中引用已删除的函数(使用 rapidJson)
- QT QOpenGLWidget:如何在不使用数据块复制的情况下修改VBO中的单个顶点值?
- 查找第一个数组中不存在的元素
- 查找不存在的键时,unordered_map返回什么
- 不将数据 socket.io c++(客户端)发送到 nodejs(服务器)socket.io
- 如何优化代码以返回最接近给定整数的数字,但给定列表中不存在?
- set::find 查找不存在的元素
- 有没有办法将字符串添加到 Vector 中,但前提是它尚不存在?->C++
- std::weak_ptr 和相应的 std::shared_ptr 之间是否存在数据竞争?
- 将数据定向到不存在的阵列中
- 关于返回对不存在数据的引用的设计
- 如何在不存在任何数据损坏风险的情况下序列化对象
- 数据正确放置在数组中,但在打印数组时不存在
- C++矢量+数组,矢量有不存在的数据
- 我可以存储指向不存在的数据的指针而不调用未定义的行为吗?
- 如何在一个套接字上实现并行请求和响应的非阻塞客户端-服务器通信模型,而不存在数据竞争