programing

"calloc"의 첫 번째 "c"는 무엇을 의미합니까?

bestcode 2022. 7. 21. 00:37
반응형

"calloc"의 첫 번째 "c"는 무엇을 의미합니까?

한 학생이 질문을 해서 나는 확실히 알지 못했다.

추측에는 "counted", "clearing", "chunked", "complete", ...

표준 라이브러리 문서에는 이 문서의 약자가 기재되어 있지 않으며 패턴을 나타내는 유사한 이름의 함수도 없습니다.실제 어원을 아는 사람, 그리고 아마도 그것을 뒷받침할 권위 있는 언급을 가지고 있는 사람?

(Robert Love의) Linux System Programming에서 발췌한 내용에 따르면, 공식 출처는 존재하지 않는다.calloc.


다음과 같은 가능성이 있는 후보가 있습니다.

  1. 카운트 또는 카운트:calloc는 개별 카운트 인수를 사용합니다.
  2. Clear. 반환된 메모리 청크가 확실히 클리어 되기 때문입니다.

    • Brian Kernighan은 "c"가 명확함을 의미한다고 믿는 것으로 알려졌다.
    • (댓글 참조).초기에는 소스 코드 코멘트에서 명확한 단어에 대한 명시적 참조가 포함되어 있는 것 같습니다(, 단어 수나 다른 후보에 대한 참조는 없습니다).파일 내의 다른 소스 코드 주석에서는 clear라는 단어가 다시 표시됩니다.calloc.
  3. C 언어에서와 같이 C.

    • (알크의 답변 및 코멘트 참조)거의 동시에 도입된 일련의 함수에 대한 명명 규칙일 수 있습니다.

calloc= 연속 메모리 할당.

의 구문에 따라서는calloc()

void *calloc (size_t number_of_blocks, size_t size_of_each_block_in_bytes);   

블록의 수와 1개의 블록의 크기라는 두 개의 파라미터를 수신하기 때문에 제공하는 블록의 수에 대해 메모리 배열을 할당합니다.

저는 "UNIX@TIME-Sharing SYSTEM: UNIX PROGRAMMER'S MANUAL. 제7판, 제2권"의 "PROGRAMMING"(이탈리아어) 장에서 다음과 같은 내용을 찾아냈습니다.

char *malloc(num);

할당하다num바이트. 반환된 포인터는 어떤 용도로도 사용할 수 있을 정도로 잘 정렬되어 있습니다. NULL사용 가능한 공간이 없는 경우 반환됩니다.

char *calloc(num, size);

공간을 할당하다num각 항목size공간은 0으로 설정되며 포인터는 어떤 용도로도 사용할 수 있을 정도로 잘 정렬되어 있습니다. NULL사용 가능한 공간이 없는 경우 반환됩니다.

 cfree(ptr) char *ptr;

공간이 에서 사용되는 풀로 반환됩니다.calloc에서 포인터를 취득하지 않으면 장애가 발생할 수 있습니다.

  • 마지막 문장은 의 명백한 증거이다.calloc()확실히 (그럴 것 같습니까?)와 더 달랐습니다.malloc()기억을 지우는 것만으로요

    도, 이 이야기는 이 없다.free()백 중 ... ) on on on 、 [ : - ]

  • 게다가 UNIX V6 에는, 어느 쪽의 콜이 이미 준비되어 있습니다.(링크된) 소스는 메모리를 제로 아웃하는 방법을 나타내지 않습니다.

의 두 하면, 저는 'c가 'c'로 되어 합니다.calloc()'clear 'clear', 'clear', ''는 'clear'의입니다.

Anant의 답변처럼 Continuous Allocation의 약자입니다.단위

malloe는 컴파일된 고정 크기 배열에서 할당하는 것이 아니라 필요에 따라 운영 체제에 공간을 요청합니다.프로그램의 다른 액티비티도 이 할당자를 호출하지 않고 공간을 요구할 수 있으므로 malloe가 관리하는 공간은 연속되지 않을 수 있습니다.따라서 빈 저장공간은 빈 블록 목록으로 유지됩니다.각 블록에는 크기, 다음 블록에 대한 포인터 및 공간 자체가 포함됩니다.블록은 스토리지 주소가 증가하는 순서대로 유지되며 마지막 블록(가장 높은 주소)이 첫 번째 블록을 가리킵니다.

C프로그래밍 언어 섹션 8.7, K&R, 제2판

아무도 모르는 것 같아.단, 이전 free() 조작에서 남은 임의의 쓰레기가 반환되는 malloc(메모리 할당)와는 달리 메모리를 클리어해야 한다는 의미론을 사용하여 콜을 기술하는 것은 학생들에게 유용한 조작 방법입니다.malloc()는 안전하지 않은 값을 반환하는 것을 사용자에게 상기시키는 데 도움이 됩니다.

언급URL : https://stackoverflow.com/questions/31888422/what-does-the-first-c-stand-for-in-calloc

반응형