Как std ::string ::c _str ()возвращает строку c -, которая не вызывает утечки памяти или неопределенного содержимого строки c -?

Я пишу строковый класс, похожий на строку std ::для домашнего задания, но я не могу понять, как вернуть строку c -, которая не вызывает утечки памяти и гарантированно останется неизменной до тех пор, пока она больше не используется. У меня сейчас:

const char* string::c_str()
{
    char c[_size+1];
    strncpy(c,_data,_size);
    c[_size]='\0';
    return c;
}

но содержимое переопределяется вскоре после его вызова. Если я выполню динамическое выделение, у меня будет либо утечка памяти, либо только одна строка c -может существовать из заданной строки в любой момент времени. Как я могу этого избежать?

6
задан jogojapan 16 September 2012 в 09:50
поделиться