참고 :
이 순수 C. 없음 C++ 기능에 대한 질문 등이다C 문자열 null 종결
질문 :
가정하자 나는 malloc
버퍼가 100 chars
방. 그런 다음 슬롯 중 5 개만 실제 chars
으로 채 웁니다. 나는 가장 좋은 방법은이 같은 버퍼에 남아있는 모든 슬롯을 null로는 것을 들었습니다 :
while (nextAvailableBufferSlot < currentBufferSize)
{
buffer[nextAvailableBufferSlot] = '\0';
nextAvailableBufferSlot++;
}
이가 꼭 필요한가요, 아니면 단순히 buffer[5] = '\0'
자신에게 루프를 저장을 설정할 수 있습니까?
상황 : 문제의 코드가 실행 위의 루프를 만들고, 버퍼 4096의 크기와 훨씬 짧은 복사 될 문자열의 99 %로 매우 자주이라고
거의 최소 2 천 번 반복 할 때마다
문자열이 어떤 크기인지 미리 알 수 없습니다. 그리고 re-allocs 너무 비싸기 때문에, 나는 처음에는 큰 버퍼 크기를 선택합니다. 데스크톱 수준의 하드웨어를 대상으로하므로 메모리가 전혀 제약되지 않습니다.
여기에는 실제로 관련이 없지만 "ANSI C"를 진정으로 의미합니까, 아니면 "C++ 응답을 유지 하시겠습니까?"와 같이 "엄격한 C"를 의미합니까? 후자라면, 내가 생각하기에 태그가 충분합니다. –
그런 최고의 연습에 대해 들어 본 적이 없기 때문에 나는 그것을 최선이라고 부르지 않을 것입니다. 비록 당신이 이것을해야 할지라도 (예를 들어, chars를 순서가 맞지 않는 것에 접근하는 것), memset이 갈 길이 될 것입니다. –