버퍼가 필요한지 여부에 따라 다릅니다.
반복 할 때마다 지워야하나요? 아니면 끝 부분에 \0
문자로 끝 부분을 표시하면 충분합니까? 결국 다양한 라이브러리 호출이 다양한 str
을 사용합니다.
정말로 삭제해야하는 경우 bzero()
을 사용할 수 있습니다. 확실히 모든 반복에서 malloc'ing 및 free'ing은 자원을 낭비합니다. 버퍼를 행복하게 다시 사용할 수 있기 때문입니다.
for 루프를 병렬 처리하는 경우, 즉 루프를 병렬 처리하는 경우, 즉이를 사용하는 여러 개의 동시 스레드가있는 경우 다른 문제가 발생합니다.
단순하고 실제적인 예 : 양동이를 사용하여 물을 운반하십시오. 그 양동이로 여러 번 여행 할 필요가 있다고 가정 해 봅시다. 집어 들고 사용하고 내려 놓고 다시 집어 사용하십시오. 가능한 한 여러 번 버킷을 다시 사용할 수 있습니다. 다른 한편으로는 당신과 더 많은 사람들이 버킷을 사용해야 할 경우 버킷에 대한 액세스를 구성하거나 더 많은 버킷이 필요합니다.
최근 제안 : 지금은 공연에 대해 걱정할 필요가 없습니다. 그들은 초기 최적화가 모든 악의 뿌리라고 말하면 곧 이유를 이해하게 될 것입니다.
먼저 문제를 이해하십시오. 버려 질 수있는 코드를 작성하십시오. 실험. 두 번째로 테스트하십시오. 그것이 당신이 필요로하는 것을 확실히하십시오. 셋째, 최적화하십시오. 루프를 1 만 번 실행하고 소요 시간을 측정하십시오. 그런 다음 malloc을 바깥쪽으로 이동하고 다시 측정하십시오 (UNIX에서는 쉘 명령 time
을 사용하십시오). 네 번째로, 첫 번째 실험은 작업 코드가 아닌 try-retry 패치의 엉망 일 가능성이 높기 때문에 다시 작성하십시오.
린스, 반복.
ps : 잠시 재미있게 보내십시오. 흥미롭고 좌절하지 않아야합니다.
당신이 그것을 내부의 malloc을 호출하는 경우 당신은 루프 외부 무료로 호출 할 수 없습니다, 또는 당신은 모든 메모리하지만 마지막 반복에서의 malloc을 누설 수 있습니다. 그러나 malloc 대신 realloc을 사용하고 외부에서는 free를 사용할 수 있습니다. – Cascabel
@ Jefromi : 나는 그 코멘트에 답을해야한다고 생각합니다. –
당신의 영어 실력은 훌륭합니다. 사실 대부분의 초보자들보다 영어 실력이 좋습니다. –