project environ:
windows 7 x64 pro
visual studio 2008 c++ sp1 pro
win32 api
directx 9.0c june 2010
boost  
question :
my project is run successful on DEBUG mode. but only Release mode error occurs.  
template <typename T>
class SceneVector : public std::vector<T>
{
public:
    SceneVector()
    {
        for(int i = 0 ; i < MAX_OBJNODE_NUMBER ; ++i) push_back(NULL);
    }
}; 
//i think the class's contents are not important
class ITaggingDebugInfo
{
protected:
    int idvl;
public:
    ITaggingDebugInfo();
    ~ITaggingDebugInfo();
    int iTaggindDebugInfoID;
    virtual std::vector<AbstractTag*> OnMakeTagList(int VlogicPackageID);
    static void Select(int vlid, int id);
    static stdext::hash_map<int,SceneVector<ITaggingDebugInfo*>> TaggingDebugInfoManager; //problem
    static std::vector<AbstractTag*> taglist[MAX_SCENE_NUMBER];             
};
//on other's cpp file
stdext::hash_map<int,SceneVector<ITaggingDebugInfo*>> ITaggingDebugInfo::TaggingDebugInfoManager;
the release mode problem is occuring when static hash_map's constructor.
here's my STL debugging step.
step 1
hash_map()
: _Mybase(key_compare(), allocator_type())
    {   // construct empty map from defaults
    }
step 2
    explicit _Hash(const key_compare& _Parg,
    const allocator_type& _Al)
    : _Traits(_Parg), _List(_Al),
        _Vec(_Al),
        _Max_bucket_size(_Bucket_size)
    {   // construct empty hash table
    _Init();
    }
step 3
void _Init(size_type _Buckets = min_buckets)
    {   // initialize hash table with _Buckets buckets, leave list alone
    _Vec.assign(_Buckets + 1, end());
    _Mask = _Buckets - 1;
    _Maxidx = _Buckets;
    }
when step 3, this pointer is NULL(0x00000000) (by debugger's watcher. but it is not confidently because release mode) and access violation exception.
but on DEBUG mode the error dosen't occur.
i really don't know why this problem happen. 
somebody help me!
 
     
     
    