I am getting an invalid pointer error when I call the below function. Why is this happening?
void Get(const char* value)
{
string st(\"testing string\");
val variable inside Get() gets destroyed once Get() returns, thus the pointer to val body becomes invalid. Also value parameter is a copy of the original pointer, so the original val pointer in main() function is left unchanged and still holds a null pointer value.
Change it to
string Get()
{
string st("testing string");
string val = st.substr(1, st.length());
return val;
}
I see two mistakes:
val.c_str() to a pointer that is local to GetVal();val is destroyed at the end of GetVal(), so the pointer value would be invalid anyway.Prefer using std::string.
string Get()
{
string st("testing string");
return st.substr(0, st.length()/2);//returning substring
}
string s = Get();
By the way, an interesting article (by Herb Sutter) you would like to read now is:
GotW #88: A Candidate For the “Most Important const”