I have a problem inserting into std::map and a class like this:
class Dat
{
private:
    char* data;
public:         
    Dat():data(NULL){}  
    ~Dat() { if(data) delete[] data; }  
    const char* get() { return data; }
    void set(char* str)
    {       
        if(!str) return;
        data = new char[strlen(str)+1];
        strcpy(data, str);
    }   
};
which I trying to use like this:
int main()
{   
    map<int, Dat> mDat;
    Dat dat;    
    dat.set("hello");
    mDat.insert(pair<int, Dat>(0, dat));
    printf("%s\n", mDat[0].get());
    return 0;
}
And the problem is:
before insert: data=0x0063a728 "hello"  
after insert:  data=0x0063a728 "îþîþîþîþîþîþîþîþîþîþîþîþîþîþîþîþOµ?bí\a" 
after printf:  data=0x0063a728 "««««««««"
Can't find out why data becomes garbage.
 
    