I am writing a String class MyString
(yes, as homework) and have to offer a toCString
method which returns a unique_ptr<char[]>
(and not a Vector
). Unfortunately I fail when returning the pointer to the caller: The result is always filled with wrong content - it seems that I create the pointer and/or the character array on the stack.
unique_ptr<char[]> MyString::toCString() const {
char *characters = new char[m_len];
char *thisString = m_string.get();
for (int i = 0; i < m_len; i++) {
characters[i] = *(thisString + m_start + i);
}
const unique_ptr<char[], default_delete<char[]>> &cString = unique_ptr<new char[m_len]>(characters);
return cString;
}
When debugging I always get expected behaviour. Problems only occur on callers site. Where is my mistake?
Aucun commentaire:
Enregistrer un commentaire