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.