我有一个包含使用地图的各种数据类型的类。该类在调试和发布模式下正常运行。但是,当我尝试调试我的程序时,调试器无法确定类内的多个映射中的内容。通常,我会怀疑来自其他地方的内存损坏,但是在运行程序时没有内存错误,并且值被设置和检索而不会发生意外。
这是调试器错误的示例。地图中的元素数量报告正确,但值是错误的。有趣的是,当我打破包含地图的类的成员函数时,不会发生此错误并且所有值都是可见的。此外,奇怪的是,字符串映射显示没有问题。
我在 Windows 7(64 位)上使用 Visual Studio 2008(SP1)。类代码实际上是在我正在调试的客户端程序启动时加载的 DLL 中,如果这有所不同的话。任何想法表示赞赏。
class DataTable {
public:
std::string get_string(std::string);
float get_float(std::string);
(etc.)
void set_string(std::string, std::string);
void set_float(std::string, float);
(etc.)
protected:
std::map<std::string, std::string> m_string_map;
std::map<std::string, float> m_float_map;
(etc.)
}