Я просто писал простой код, а потом увидел что-то странное. Код должен добавить строку в другую строку. Выходные данные новой добавленной строки выводят не только правильную добавленную строку, но также каждый раз четыре раза добавляют число 2, и я не понимаю, почему. Я думал, что это какая-то утечка памяти, которую я упустил из виду, или что-то в этом роде, но там он выводит каждый раз одни и те же четыре числа.
Код:
#include <iostream>
using namespace std;
unsigned int getStrSize(const char* string)
{
unsigned int size = 0;
while (string[size] != '\0')
{
size++;
}
return size;
}
int main()
{
const char* bla1 = "hello";
const char* bla2 = " blaah";
int size1 = getStrSize(bla1);
int size2 = getStrSize(bla2);
int size12 = size1 + size2;
char* bla12 = new char[size12];
for (int i = 0; i < size1; i++)
{
bla12[i] = bla1[i];
}
for (int i = 0; i < size2; i++)
{
bla12[i + size1] = bla2[i];
}
char* blaNew = bla12;
cout << bla1 << "\n";
cout << bla2 << "\n";
cout << bla12 << "\n";
cout << blaNew << "\n";
}
Выходы:
hello
blaah
hello blaah²²²²
hello blaah²²²²