를 사용하는 경우 (예 : strftime()
, strcpy()
, MultiByteToWideChar()
) 문자 배열 (대신 std::string
's의) 하나가이 옵션을 가지고 처리 :문자 배열의 크기 일부 라이브러리 함수를 사용하는 경우 특정 라이브러리 함수
- 는 고정을 사용합니다 ,536,913 : 때문에 문자열 길이 제한 한이 같은 유틸리티 함수를 생성하고자 할 때 또한 나쁜 필요한 크기를 할당 할
사용
new
의 분명 나쁜 크기의 배열 (예 :char buffer[256];
를)char * fun(void) { char * array = new char[exact_required_size]; some_function(array); return array; }
이러한 기능을 사용하는 사용자는
delete
array
이어야합니다.
그리고 하나 (하나는 함수가 반환하는 시간 문자열 예측할 수 없을 때) 문제가 기능을 사용하기 전에 정확한 배열 크기/길이를 알 수없는 경우 두 번째 옵션도 항상 가능한 것은 아니다 .
완벽한 길이는 가변 길이이고 소멸자는 메모리 할당을 담당하지만 많은 라이브러리 함수는 std::string
(다른 질문이든 아니든)을 지원하지 않기 때문에 std::string
을 사용하는 것이 가장 좋습니다.
그래, 뭐가 문제 야? 음 -이 기능들을 어떻게 사용해야합니까? 고정 크기 배열을 사용하거나 new
을 사용하고 메모리 할당 해제에 대해 내 함수의 사용자가 걱정할 필요가 없습니까? 아니면 실제로 은입니다. 내가 생각하지 못했던 매끄러운 솔루션입니까?
만약 내가 이해한다면 잘 모르겠다 - 나는 이렇게 sth 할 수 있다고 말한다 :'std :: string buffer; strcpy (buffer.data(), "text");'? – NPS