위의 예에서는 메모리 공간을 동적으로 할당하는 데 사용되는 포인터 `p1`을 선언했습니다. 위의 예에서는 지금까지 사용하던 이름을 지정하고 인쇄했습니다. 주소의 경우 문자 수가 약 50개여야 한다고 예상했습니다. 따라서 주소의 크기는 50 * sizeof (char)입니다. 반환 형식이 무효화된 free 함수의 구문입니다. 이제 무료를 사용하여 프로그램의 끝에 동적으로 할당 된 메모리를 출시 한 예제를 살펴 보겠습니다. 이 예제에서는 먼저 n 요소를 포함하는 int 형식의 포인터 `p`를 선언했습니다. 따라서 `p`는 n 요소를 포함하는 정수 배열입니다. 따라서 포인터 `p`가 가리키는 배열에 크기 n * sizeof (int)의 메모리를 할당했습니다. 따라서 이제 `n` 요소로 구성된 정수 배열에 메모리 공간이 할당됩니다.
또한 사용자에게 배열 요소의 값을 입력하고 해당 값을 표시하도록 요청합니다. 따라서 이것은 calloc 구문에 차이가있는 malloc의 예와 동일합니다. 여기서 는 (int*) calloc(n, sizeof(int)을 썼는데, 여기서 n은 정수 배열의 요소 수(이 경우 5)이고 sizeof(int)는 각 요소의 크기입니다. 따라서 배열의 총 크기는 n * sizeof (int)입니다. 모든 비트 0에 대한 초기화는 부동 점 또는 포인터가 각각 0.0 및 null 포인터 값으로 초기화될 것이라는 점을 보장하지 않습니다 (모든 공통 플랫폼에서 는 사실이지만) 이제 문자 배열을 선언하면서 크기를 지정합니다. 입력 문자열의 크기보다 작으면 배열에 할당된 메모리의 공간이 입력 문자열의 크기보다 작기 때문에 오류가 발생합니다. 이것은 작은 상자에 큰 장난감을 맞추려고 노력하는 것과 같은 경우입니다. 입력 문자열의 크기보다 훨씬 큰 크기를 지정하면 배열에 입력 문자열의 크기보다 훨씬 큰 메모리에 공간이 할당되므로 필요하지 않은 경우에도 불필요하게 더 많은 메모리를 소비합니다. 이것은 큰 상자에 작은 장난감을 넣는 것과 같습니다. 메모리 상태가 부족하면 errno 및 [ENOMEM] 오류 조건이 필수입니다.