calloc과 malloc의 차이점은 무엇입니까? 메모리 할당에 더 적합한 것은 무엇입니까?


대답 1:

calloc = malloc + memset () (memset 0)

Malloc

인수

malloc은 하나의 인수 만 취합니다.

malloc (바이트 크기);

초기화

malloc은 메모리 영역을 초기화하지 않습니다.

할당 된 메모리 영역에는 가비지 값이 있습니다.

칼록

인수

calloc은 두 가지 인수를 취합니다.

calloc (요소의 수, 요소의 크기);

초기화

calloc은 메모리 영역을 0으로 초기화합니다.

결론:

동적으로 할당 된 메모리 영역을 0으로 초기화해야 할 때 calloc을 사용하십시오.

그렇지 않으면 malloc을 사용하십시오.

콘텐츠 크레딧 :

Log2Base2-자신을 시각화

감사!


대답 2:

질문 : calloc과 malloc의 차이점은 무엇입니까? 메모리 할당에 더 적합한 것은 무엇입니까?

나는 전에 Seth D. Fulmer의 대답에서 malloc과 calloc은 무엇입니까? 기본적으로 calloc은 malloc과 동일하지만 calloc은 할당 된 메모리의 모든 인덱스를 0으로 초기화합니다. 실제로 calloc은 순수하게 C ++ 코드에는 존재하지 않는 C의 훌륭한 기능입니다. C ++에서는 malloc 및 calloc과 같은 C 함수를 사용할 수 있지만 malloc과 동등한 기능이 새로운 연산자이며 calloc과 동등한 기능은 없습니다. 할당 된 항목을 0으로 설정하는 새로운 기능은 없습니다. 부분적으로 C ++에서는 기본 배열이 아닌 객체를 생성한다고 가정하고 (둘 다 수행 할 수 있음) 가정하면 다음과 같이하면 의미가 없습니다.

포인트 * ptrPoint = new Point ();

ptrPoint가 가리키는 객체는 생성 후 0으로 설정됩니다. 따라서 calloc은 구조체와 달리 프리미티브 배열을 할당하는 경우에만 실제로 유용합니다. 구조 유형의 배열을 작성하는 경우 malloc을 사용하고 수동으로 배열 / 메모리 블록의 각 구조를 적절한 값으로 설정해야합니다.


대답 3:

질문 : calloc과 malloc의 차이점은 무엇입니까? 메모리 할당에 더 적합한 것은 무엇입니까?

나는 전에 Seth D. Fulmer의 대답에서 malloc과 calloc은 무엇입니까? 기본적으로 calloc은 malloc과 동일하지만 calloc은 할당 된 메모리의 모든 인덱스를 0으로 초기화합니다. 실제로 calloc은 순수하게 C ++ 코드에는 존재하지 않는 C의 훌륭한 기능입니다. C ++에서는 malloc 및 calloc과 같은 C 함수를 사용할 수 있지만 malloc과 동등한 기능이 새로운 연산자이며 calloc과 동등한 기능은 없습니다. 할당 된 항목을 0으로 설정하는 새로운 기능은 없습니다. 부분적으로 C ++에서는 기본 배열이 아닌 객체를 생성한다고 가정하고 (둘 다 수행 할 수 있음) 가정하면 다음과 같이하면 의미가 없습니다.

포인트 * ptrPoint = new Point ();

ptrPoint가 가리키는 객체는 생성 후 0으로 설정됩니다. 따라서 calloc은 구조체와 달리 프리미티브 배열을 할당하는 경우에만 실제로 유용합니다. 구조 유형의 배열을 작성하는 경우 malloc을 사용하고 수동으로 배열 / 메모리 블록의 각 구조를 적절한 값으로 설정해야합니다.