c언어 동적메모리 예제

C는 이러한 작업을 달성하기 위한 몇 가지 기능을 제공합니다. C 프로그래밍에서 동적 메모리 할당을 용이하게하기 위해 헤더 파일 아래에 정의 된 C에서 제공하는 4 개의 라이브러리 함수가 있습니다. 그들은 : C 언어에서 동적으로 할당 된 메모리는 힙에서 온다. 모든 프로세스의 프로세스 제어 블록(PCB)이 표시되면 힙 및 스택의 방향은 반대입니다. 힙에서 엄청난 양의 메모리를 할당하는 경우 힙이 스택처럼 커지고 경계를 넘을 수 있습니다. malloc(), calloc() 또는 realloc()에 의해 할당되지 않은 메모리 위치를 해제하려고 해서는 안 됩니다. 이 함수는 두 개의 인수를 사용하며, 첫 번째는 malloc() 또는 calloc()에 의해 이전에 할당된 메모리 블록에 대한 포인터이며 두 번째 는 해당 블록의 새 크기입니다. malloc() 함수는 런타임시 메모리 블록을 할당하는 데 사용됩니다. 이 함수는 지정된 크기의 메모리 블록을 예약하고 형식 void의 포인터를 반환합니다. 즉, 형식 캐스팅을 사용하여 모든 유형의 포인터에 할당 할 수 있습니다.

지정된 대로 충분한 공간을 할당하지 못하면 NULL 포인터를 반환합니다. 동적 메모리 할당은 C 프로그래밍 언어의 고유한 기능입니다. 이를 통해 프로그램에 적합한 모든 크기와 길이의 데이터 유형과 구조를 만들 수 있습니다. 동적 메모리 할당의 두 가지 일반적인 응용 프로그램이 있습니다, 이들은 동적 배열과 동적 데이터 구조를 사용하는 동안 입니다 예를 들어, C 프로그램에서 링크 된 목록. 사용 사례를 살펴보겠습니다. 컴파일러가 코드를 컴파일하고 실행 암호를 생성 할 때까지 배열의 정확한 크기를 모르는 경우 프로그래밍에 상황이 있습니다. 우리가 선언 한 배열의 크기는 어쩌면 충분하지 않거나 필요한 것보다 더 많을 수 있습니다. 이 경우 동적 메모리 할당을 사용하는 것이 가장 좋습니다.

이제 문제는 동적 메모리를 할당하는 방법입니다? 대답은 C 언어 지원 4 메모리 관리 기능으로 알려진 라이브러리 기능 (malloc, calloc, realloc, 무료). 이러한 함수는 #include 헤더 파일에 정의되어 있습니다. 각 함수를 자세히 살펴보겠습니다. 먼저 응용 프로그램 메모리의 구성을 이해해 보겠습니다. 힙은 메모리 관리 기능을 사용하여 메모리를 할당하고 할당 해제하는 동안 사용되는 응용 프로그램 메모리의 일부입니다. 힙은 사용 가능한 메모리라고도 합니다. 아래 그림이 설명합니다. 이 프로그램에서는 malloc() 함수를 사용하여 런타임에 int, char 및 float 변수에 대한 메모리를 만들고 프로그램을 종료하기 전에 free() 함수를 사용하여 런타임에 할당된 메모리를 해제합니다. 사용자가 할당 할당 해제된 경우 해제된 메모리보다 p2로 가리키는 메모리를 추가로 사용할 수 있습니다. C 언어는 동적 메모리 관리, 즉 malloc, calloc, realloc 및 free를 위한 네 가지 기능을 제공한다는 점을 기억하십시오.

이러한 함수는 stdli.b .h 헤더 파일에 선언됩니다. 표에 요약되어 있으며 아래에 설명되어 있습니다. 이 함수는 메모리를 동적으로 할당하는 데 사용됩니다. 인수 크기는 할당할 바이트 수를 지정합니다. 크기_t 형식은 stdlib.h. 2. 정적 배열에 고정 크기가 있습니다. 우리는 더 많은 요소가 필요한 상황을 처리하기 위해 크기를 늘릴 수 없습니다.

결과적으로 필요한 것보다 더 큰 배열을 선언하여 메모리낭비를 초래합니다. 또한 더 적은 수의 배열 요소가 필요한 경우 메모리를 절약하기 위해 배열 크기를 줄일 수 없습니다. 우리는 메모리 블록의 크기를 변경하려는 경우 우리는 아래 방법으로 할 수 있습니다 동적으로 할당 된 메모리가 자동으로 해제되지 않습니다, 그것은 프로그램의 끝까지 종료됩니다. ”malloc” 또는 ”메모리 할당” 메서드는 지정된 크기로 단일 큰 메모리 블록을 동적으로 할당하는 데 사용됩니다. 형식 의 포인터에 캐스팅 할 수있는 형식 void의 포인터를 반환합니다. 설명: 이 예제 코드를 빌드하고 실행할 때