두 개의 C- 문자열을 병합하는 간단한 함수를 작성했습니다. 새로운 메모리 덩어리를 동적으로 할당하려고 시도하면서 나는 다음을 발견했다 :새로운 것은 너무 많은 메모리를 할당합니다.
char * out = new char[size];
std::cout << strlen(out) <<std::endl;
크기가 4 일 때 16을, 크기가 22 일 때 40을 반환한다. 누구나 그런 역할을하는 이유와 특정 갯수의 문자로 C- 문자열을위한 메모리를 할당하는 방법에 대한 아이디어가 있습니까? 메모리를 초기화하지 않는 메모리를 할당 할 new
을 사용하여
문자열을 초기화하지 않습니다. 'strlen()'은 0으로 끝나는 버퍼가 필요합니다. 너무 많은 시간을 물어 ... –
멍청이 - 질문에 strlen()을 보자 마자 .... –
이것은 제안 된 원본의 복제본입니다 명확하지 않습니다. 그 질문은 초기화 된 배열에'strlen'을 적용하는 것이었지만, 종결 널 문자를 포함하지 않았습니다. 이 질문은'strlen'을 초기화되지 않은 배열에 적용합니다. 혼란이'strlen'이 어떻게 작동하는지,'new'가 배열을 초기화하는 방법과 할당 방법에 관한 것인지 아닌지에 대해서는 의문의 여지가 없습니다. –