Давайте рассмотрим следующий код:
int index = 0;
for(; index < original_str_size; index++)
{
if(index < original_str_size)
m_str[index] = str_copy[index];
else
m_str[index] = string[index];
}
Посмотрите на ваше условие цикла, затем посмотрите на ваше условие if. Ясно, что блок else никогда не будет выполнен, и ваша строка никогда не будет объединена.
Чтобы решить эту проблему, ваше условие цикла должно быть заменено на needed_length
. Тогда вам придется заменить string[index]
на string[index - original_str_size]
, чтобы получить правильный индекс в string
.
Ваш код должен выглядеть следующим образом:
int index = 0;
for(; index < needed_length; index++)
{
if(index < original_str_size)
m_str[index] = str_copy[index];
else
m_str[index] = string[index - original_str_size];
}
На заметке, на что указывает str_copy
? Это действительная память? del()
освободил память? Возможно, захочу это проверить.