Я проверял свои навыки с помощью указателей и буфера в C ++.Я попробовал код ниже, и все работает отлично.Без утечек, без сбоев, ничего.
Если честно, я этого не ожидал.
Когда я звоню char* buf2 = new char[strlen(buf)]
, я не ожидал, что srlen(buf)
вернет правильный размер.Я всегда думал, что для работы strlen
нужна завершенная строка NULL.Здесь дело не в этом, так почему работает этот код?
int main(){
const char* mystr = "mineminemine";
char* buf = new char[strlen(mystr)];
memcpy(buf, mystr, strlen(mystr));
char* buf2 = new char[strlen(buf)];
memcpy(buf2, buf, strlen(buf));
delete[] buf2;
delete[] buf;
}