이와 같이 생성을 캡슐화하면 벡터가 완전히 빌드되거나 전혀 빌드되지 않도록 할 수 있습니다. 또한 클라이언트에 영향을 주지 않고 나중에 기본 데이터 구조를 완전히 변경할 수 있습니다(예: 속도를 위해 공간을 절약하기 위해 스파스 어레이로 만들려는 경우). 두 번째 예제에서는 이전 예제와 동일한 함수를 보여 주지만 정수 대신 구조를 사용합니다. C에서 코드는 다음과 같습니다 : “malloc” 또는 “메모리 할당” 메서드는 지정된 크기의 단일 큰 메모리 블록을 동적으로 할당하는 데 사용됩니다. 형식 의 포인터에 캐스팅 할 수있는 형식 void의 포인터를 반환합니다. 첫 번째 malloc은 x에 대한 메모리(포인터를 두 배로) 포함하여 구조체에 대한 메모리를 할당합니다. 두 번째 malloc는 이중 값 wtich x 포인트에 대 한 메모리를 할당 합니다. 첫 번째 줄에서는 벡터 오브젝트에 대한 메모리를 할당합니다. malloc()는 할당된 메모리에 대한 포인터를 반환하므로 y는 벡터 포인터여야 합니다.
두 번째 줄에서는 10개의 doubles 배열에 메모리를 할당합니다. 응용 프로그램을 실행하는 동안 일정량의 메모리를 할당한다고 가정해 보겠습니다. 언제든지 malloc 함수를 호출할 수 있으며 힙에서 메모리 블록을 요청합니다. 운영 체제는 프로그램에 대한 메모리 블록을 예약하고 원하는 방식으로 사용할 수 있습니다. 블록을 완료하면 무료 함수를 호출하여 재활용을 위해 운영 체제로 반환합니다. 그런 다음 다른 응용 프로그램은 나중에 자신의 사용을 위해 예약 할 수 있습니다. 다음 예제에서는 힙을 사용하는 방법을 보여 주며 있습니다. 정수 블록을 할당하고, 채우고, 작성하고, 삭제합니다: 벡터와 배열을 동시에 할당하여 단일 malloc에서 이 작업을 수행할 수 있습니다. 예를 들어, 1st malloc() 벡터 구조(두 배 + int에 대한 포인터)를 보유할 만큼 충분한 메모리만 할당합니다. 원하는 것을 얻으려면 두 개의 malloc(s)가 필요합니다. 구조체를 다시 정렬하고 단일 malloc()을 수행할 수 있습니다. 더 이상 필요하지 않은 메모리 블록을 할당 해제할 수도 있습니다.
블록을 할당 해제하면 후속 malloc 명령에 의해 다시 사용할 수 있으므로 시스템에서 메모리를 재활용할 수 있습니다. 메모리를 할당 해제하는 데 사용되는 명령을 사용 가능한 명령이라고 하며 포인터를 매개 변수로 허용합니다. free 명령은 두 가지 작업을 수행합니다: 이 코드는 C에서 블록을 할당, 할당 및 사용하는 프로세스를 보여 주는 데에만 유용합니다. malloc 선은 지정된 크기의 메모리 블록을 할당합니다(이 경우 sizeof(int) 바이트(4바이트). C의 sizeof 명령은 모든 유형의 크기를 바이트로 반환합니다. sizeof (int)는 대부분의 컴퓨터에서 4 바이트와 같기 때문에 코드는 malloc (4)이라고 쉽게 말했을 수 있습니다. 그러나 sizeof를 사용하면 코드가 훨씬 더 이식가능하고 읽기 쉽습니다. 이 프로그램의 첫 번째 줄은 malloc 함수를 호출합니다. 이 함수는 세 가지 작업을 수행합니다: 2nd malloc() 실제로 메모리를 할당하여 10double을 유지합니다. 이러한 모든 예제에서 포인터를 초기화하는 네 가지 방법이 있음을 알 수 있습니다. int *p에서와 같이 포인터가 선언되면 초기화되지 않은 상태에서 프로그램에서 시작됩니다.
그것은 아무 곳이나 가리킬 수 있으므로 오류입니다. 포인터 변수의 초기화에는 메모리의 알려진 위치를 가리키는 작업이 포함됩니다. malloc 함수는 할당된 블록에 대한 포인터를 반환합니다. 이 포인터는 일반적입니다. 형식 캐스팅 없이 포인터를 사용하면 일반적으로 컴파일러에서 형식 경고가 생성됩니다.