マップを使用してさまざまなデータ型を含むクラスがあります。クラスは、デバッグおよびリリース モードで正しく機能します。ただし、プログラムをデバッグしようとすると、デバッガーはクラス内の複数のマップに何があるかを判断できません。通常、他の場所からのメモリ破損が疑われますが、プログラムの実行中にメモリ エラーは発生せず、問題なく値が設定および取得されます。
デバッガー エラーの例を次に示します。マップ内の要素の数は正しく報告されますが、値はエラーです。興味深いことに、マップを含むクラスのメンバー関数内でブレークすると、このエラーは発生せず、すべての値が表示されます。また、奇妙なことに、文字列マップは問題なく表示されます。
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.)
}