Я пытаюсь воссоздать простой класс строк. Это только для упражнений. Когда мой код заканчивается, я получаю ошибку во время выполнения. Я не совсем уверен, но я думаю, что это утечка памяти.Неизвестная утечка памяти?
Вот код:
class FITString{
char *tekst;
public:
FITString(char *bla = " "){
tekst = new char[strlen(bla) + 1];
strcpy_s(tekst, strlen(bla) + 1, bla);
}
~FITString(){
delete[] tekst;
tekst = nullptr;
}
FITString(FITString &original){
tekst = new char[strlen(original.tekst) + 1];
strcpy_s(tekst, strlen(original.tekst) + 1, original.tekst);
}
FITString operator+ (FITString &drugi){
char *pomocna = new char[strlen(tekst) + strlen(drugi.tekst) + 1];
strcpy_s(pomocna, strlen(tekst) + 1, tekst);
strcat_s(pomocna, strlen(tekst) + strlen(drugi.tekst) + 1, drugi.tekst);
return pomocna;
}
void operator+= (FITString &drugi){
strcat_s(tekst, strlen(tekst) + strlen(drugi.tekst) + 1, drugi.tekst);
}
char & operator[] (int position){
char *pomocni = new char[strlen(tekst)+1];
strcpy_s(pomocni, strlen(tekst) + 1, tekst);
if (position <= strlen(tekst)){
pomocni += position;
pomocni--;
return *pomocni;
}
}
friend ostream & operator<< (ostream &COUT, FITString &obj);
};
ostream & operator<< (ostream &COUT, FITString &obj){
COUT << obj.tekst;
return COUT;
}
int main()
{
FITString bezze = "Sta ima";
FITString bezze2 = "Nema nista";
FITString bezze3 = "Ma eo";
FITString bezze4 = bezze + bezze2 + bezze3;
cout << bezze4 << endl;
FITString bezze5 = "Ma jok";
cout << endl;
bezze5 += bezze;
cout << bezze5 << endl;
cout << bezze5[4] << endl;
system("Pause");
return 0;
}
В 'operator + =' you 'strcat', не выделяя дополнительного места для новых символов. –
Можете ли вы отправить весь вывод программы и ошибку, которую вы получаете? – EkcenierK
_ Я получаю ошибку времени выполнения. Не могли бы Вы уточнить ? –