我有时(随机地)得到不正确的值初始化,这让我认为我在某个地方使用未初始化的内存。我的主要数据结构是:
template <class state>
class learnedStateData {
public:
learnedStateData() :gCost(DBL_MAX), hCost(0), isDead(false) {}
state theState;
double gCost;
double hCost;
bool isDead;
};
它被存储在一个STL hash_map中。关于如何从这个数据结构中获取未初始化的数据(除了theState之外),您有什么想法吗?
让我澄清一下:我不希望我的值未初始化,但它们有时似乎是随机的。
发布于 2010-10-01 07:13:00
实现是非常可靠的.你的问题一定在别的地方。你可以使用valgrind这样的工具来检查无效的内存访问,未初始化的读取等。您可以添加一些断言,以尝试缩小状态损坏的范围。如果您提供哈希算法,请确保它为相同的键值一致地返回相同的值。检查一下,当对象在容器中时,你不会以某种方式修改它的键。您可以换用std::map<>,看看问题是否消失了。
发布于 2010-10-01 06:40:04
有没有可能你在某个地方得到了一个无效的迭代器或指向learnedStateData<T>
的指针?
发布于 2010-10-01 06:18:25
您尚未在构造函数内初始化theState
template <class state>
class learnedStateData {
public:
learnedStateData() :theState(),gCost(DBL_MAX), hCost(), isDead() {}
state theState; ^ ^ ^
double gCost; |_________________________|__________|
double hCost; |
bool isDead; Value Initialized
};
https://stackoverflow.com/questions/3836923
复制相似问题