我有一个包含结构元素的向量:
struct hairParticle{
bool seed;
double mass;
double diameter;
double stiffnessCoeff;
double bendingCoeff;
double frictionCoeff;
glm::vec3 position;
glm::vec3 velocity;
glm::vec3 force;
std::vector<glm::vec3> direction;
std::vector<unsigned int> neighbours;
std::vector<double> neighbourRestingLengths;
};
当我尝试用数据填充这个向量时,它在大约 1000 个条目下工作正常,但在大约 3000 个条目时,程序因内存分配错误而崩溃。我不知道是什么原因造成的。经过一番谷歌搜索后,我发现了这个:
http://www.cplusplus.com/forum/general/13653/
和计算机说这个结构的大小是 120 字节,大概没有考虑内部向量的大小,但现在它们的大小不超过 10 个元素。因此,即使 3000 个元素中的每个元素有 200 个字节,最大内存 4GB 也应该足够了。
另一种解决方案是使用双端队列而不是向量,但据我了解(可能是错误的),双端队列不太适合索引,我真的需要能够尽快访问任何元素。
虽然我需要更改内部向量,但我认为它们作为指针存储在 struct 中,这意味着在更改内部向量后,整个向量(这些 struct 元素的)不需要重新分配内存(也许我再次我错了)。
我在 Windows 上使用 Code::Blocks。
有谁知道,是什么导致了这个错误,我该如何解决它 - 我想将向量作为容器,但不要坚持 :) 谢谢