c언어 메모리 할당 예제

malloc() 또는 calloc()에 메모리가 충분하지 않은 경우 realloc() 함수를 사용하여 메모리를 재할당할 수 있습니다. 즉, 메모리 크기를 변경합니다. 위의 예에서 piData1 및 piData2는 두 개의 포인터입니다. malloc을 사용하여 piData1에 메모리를 할당하고 할당 된 메모리에 100을 할당합니다. 추가 메모리를 다시 할당하지 않고 위의 예제를 시도할 수 있으며 strcat() 함수는 설명에서 사용 가능한 메모리부족으로 인해 오류를 제공합니다. 따라서 위에서 언급한 모든 문제를 해결하기 위해 C 언어는 동적 메모리 할당 옵션을 제공하며 프로그래머가 명시적으로 삭제하지 않을 때까지 프로그램 전체에 걸쳐 작동한다는 점을 잘 고려합니다. 따라서 완전한 제어 권한을 가지며 크기가 정의되면 변경할 수 없는 배열과 달리 메모리를 할당하는 동안 모든 크기 값을 전달할 수 있습니다. 할당된 메모리를 포인터 piData2에 할당하면 할당된 메모리가 두 포인터에서 공유됩니다. 참고 : 할당 된 메모리를 0으로 초기화하지 않으려면 calloc을 통해 malloc을 사용하는 것이 좋습니다.

이 프로그램에서는 malloc() 함수를 사용하여 런타임에 텍스트 문자열에 대한 메모리를 만들고 텍스트 문자열은 사용자가 입력하고 표시됩니다. free() 함수를 사용하여 점유된 메모리를 해제합니다. malloc() 함수는 요청된 메모리의 단일 블록을 할당합니다. 예를 들어, char *piBuffer = malloc(5*sizeof(char)); “사용” 메서드는 메모리를 동적으로 할당 해제하는 데 사용됩니다. 함수 malloc() 및 calloc()를 사용하여 할당된 메모리는 자체적으로 할당 해제되지 않습니다. 따라서 동적 메모리 할당이 수행될 때마다 free() 메서드가 사용됩니다. 그것은 그것을 해제 하 여 메모리의 낭비를 줄일 수 있습니다. 동적 메모리가 필요할 때마다 필요한 형식의 포인터를 만들고 라이브러리 함수 malloc, calloc… 등. 프로그래밍하는 동안 배열의 크기를 알고 있다면 쉽게 배열로 정의 할 수 있습니다.

예를 들어, 어떤 사람의 이름을 저장하려면, 그것은 최대 100 문자까지 갈 수 있습니다, 그래서 당신은 다음과 같이 뭔가를 정의 할 수 있습니다 – “calloc”또는 “연속 할당”방법은 동적으로 지정된 유형의 메모리 블록의 지정된 수를 할당하는 데 사용됩니다. 각 블록을 기본값 `0`으로 초기화합니다. 메모리 관리 기능을 사용하여 메모리를 할당하면 할당된 메모리 블록에 대한 포인터를 반환하고 메모리 블록의 시작 주소를 가리키는 포인터를 반환합니다. 사용 가능한 공간이 없는 경우 함수는 null 포인터를 반환합니다. 위의 함수를 학습하기 전에 정적 메모리 할당과 동적 메모리 할당의 차이점을 이해해 보겠습니다. malloc() 또는 calloc() 함수가 차지하는 메모리는 free() 함수를 호출하여 해제해야 합니다. 그렇지 않으면 프로그램이 종료될 때까지 메모리를 사용합니다. “malloc” 또는 “메모리 할당” 메서드는 지정된 크기로 단일 큰 메모리 블록을 동적으로 할당하는 데 사용됩니다. 형식 의 포인터에 캐스팅 할 수있는 형식 void의 포인터를 반환합니다. 이 함수는 주소로 지정된 메모리 블록 블록을 해제합니다. calloc()는 런타임시 메모리를 할당하는 데 사용되는 또 다른 메모리 할당 함수입니다. calloc 함수는 일반적으로 배열 및 구조체와 같은 파생 된 데이터 형식에 메모리를 할당 하는 데 사용 됩니다.