heap corruption problem in singleton class
Hi all,
Here one tricky issue, In my project I have used a singleton class
used to store data and value info. this information I will use(call
after system up) 4 times in a year and depends on the requirement not
frequently. In rare scenario while calling get member function I am
getting the exception my system is going down(core dump). I
reproduced the issue bye corrupting the ms_ptr pointer pointing to the
memory location(in Vxworks 6.7 facility is there) bye manually after
some time(not immediately) I generated a scenario to call this
singleton class member function I got the same core dump. This same
issue I reproduced by ms_ptr pointing to invalid location.
class config_data
{
public:
typedef config_data this_t;
typedef map<char*, int> input_data;
static this_t& instance ();
void set (const input_data& inData);
private:
static this_t* ms_ptr;
// Constructor
config_data () {}
// GET method
int get (const char *inName, const int inValue);
// Cannot copy a singleton
config_data(const this_t&);
this_t& operator= (const this_t&);
};
config_data* config_data::ms_ptr(NULL);
config_data& config_data::instance ()
{
if (!ms_ptr)
{
ms_ptr = new config_data;
}
return *ms_ptr;
}
set & get used to set the values into map and getting the values from
map. there is iterator problem over here I have not used iterator in
get also.
can any one please help me to fix this problem.
1) I want to know who is corrupting the heap location fist to fix the
problem. How I come to know while corrupting the heap memory itself
there is any mechanism to protect/ raise an exception while corrupting
the memory itself.