>  기사  >  백엔드 개발  >  동적 메모리 할당은 C 언어의 메커니즘입니다. 이를 통해 프로그램은 런타임에 메모리 공간을 동적으로 할당하고 해제할 수 있습니다. 동적 메모리 할당을 사용하면 프로그램은 컴파일 타임에 메모리 크기를 결정할 필요 없이 필요에 따라 동적으로 메모리를 할당할 수 있습니다. 이를 통해 프로그램은 메모리를 보다 유연하게 관리하고 사용 가능한 시스템 리소스를 효율적으로 사용할 수 있습니다.

동적 메모리 할당은 C 언어의 메커니즘입니다. 이를 통해 프로그램은 런타임에 메모리 공간을 동적으로 할당하고 해제할 수 있습니다. 동적 메모리 할당을 사용하면 프로그램은 컴파일 타임에 메모리 크기를 결정할 필요 없이 필요에 따라 동적으로 메모리를 할당할 수 있습니다. 이를 통해 프로그램은 메모리를 보다 유연하게 관리하고 사용 가능한 시스템 리소스를 효율적으로 사용할 수 있습니다.

WBOY
WBOY앞으로
2023-09-07 11:49:021397검색

动态内存分配(Dynamic Memory Allocation)是C语言中的一种机制。它允许程序在运行时动态地分配和释放内存空间。通过使用动态内存分配,程序可以根据需要动态地分配内存,而不需要在编译时确定内存大小。这使得程序能够更灵活地管理内存,并有效地利用可用的系统资源

여기서 C 언어의 동적 메모리 할당이 무엇인지 알아봅니다. C 프로그래밍 언어는 메모리 할당 및 관리를 위한 여러 기능을 제공합니다. 이러한 기능은 헤더 파일에서 찾을 수 있습니다. 메모리 할당에는 다음 함수가 사용됩니다.

Function Description
void *calloc(int num, int size); 이 함수는 num 요소의 배열을 할당합니다. 각 요소 크기는 바이트 단위입니다.
void free(void *address); 이 함수는 주소로 지정된 메모리 블록을 해제합니다.
void *malloc(int num); 이 함수는 num바이트의 배열을 할당하고 초기화되지 않은 상태로 둡니다.
void *realloc(void *address, int newsize); 이 함수는 메모리를 재할당하여 newsize로 확장합니다.

동적으로 메모리 할당

프로그래밍하는 동안 배열의 크기를 알면 배열로 정의하기 쉽습니다. 예를 들어, 어떤 사람의 이름을 저장하려면 최대 100자까지 포함될 수 있으므로 다음과 같이 정의할 수 있습니다. -

char name[100];

하지만 이제 필요한 텍스트의 길이를 알 수 없는 상황을 생각해 보겠습니다. 예를 들어 저장하려면 주제에 대한 자세한 설명을 저장하고 싶습니다. 여기서는 필요한 메모리 양을 정의하지 않고 문자에 대한 포인터를 정의해야 하며 필요에 따라 다음 예와 같이 메모리를 할당할 수 있습니다. -

예제 코드

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
   char name[100];
   char *description;
   strcpy(name, "Adam");
   /* allocate memory dynamically */
   description = malloc( 200 * sizeof(char) );
   if( description == NULL ) {
      fprintf(stderr, "Error - unable to allocate required memory</p><p>");
   } else {
      strcpy( description, "Adam a DPS student in class 10th");
   }
   printf("Name = %s</p><p>", name );
   printf("Description: %s</p><p>", description );
}

Output

Name = Zara Ali
Description: Zara ali a DPS student in class 10th

동일할 수 있습니다. calloc() 프로그램을 사용하여 작성되었습니다. 유일한 문제는 아래와 같이 malloc을 calloc으로 바꿔야 한다는 것입니다.

calloc(200, sizeof(char));

따라서 일단 크기가 정의된 배열과 달리 메모리를 할당할 때 모든 크기 값을 전달할 수 있습니다. 변경할 수 없습니다.

메모리 위치 크기 조정

프로그램이 출시되면 운영 체제는 프로그램에서 할당한 모든 메모리를 자동으로 해제하지만, 메모리가 더 이상 필요하지 않으면 free( ) 함수를 호출해야 합니다. 메모리를 해제합니다.

또는 realloc() 함수를 호출하여 할당된 메모리 블록의 크기를 늘리거나 줄일 수 있습니다. 위 프로그램을 다시 확인하고 realloc() 및 free() 함수를 사용해 보겠습니다. -

예제 코드

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
   char name[100];
   char *description;
   strcpy(name, "Adam");
   /* allocate memory dynamically */
   description = malloc( 30 * sizeof(char) );
   if( description == NULL ) {
      fprintf(stderr, "Error - unable to allocate required memory</p><p>");
   } else {
      strcpy( description, "Adam a DPS student.");
   }
   /* suppose you want to store bigger description */
   description = realloc( description, 100 * sizeof(char) );
   if( description == NULL ) {
      fprintf(stderr, "Error - unable to allocate required memory</p><p>");
   } else {
      strcat( description, "He is in class 10th");
   }
   printf("Name = %s</p><p>", name );
   printf("Description: %s</p><p>", description );
   /* release memory using free() function */
   free(description);
}

Output

Name = Adam
Description: Adam a DPS student.He is in class 10th

추가 메모리를 재할당하지 않고 위의 예를 시도해 볼 수 있습니다. strcat() 함수는 다음과 같은 설명을 제공합니다. 사용 가능한 메모리 부족으로 인한 오류입니다.

위 내용은 동적 메모리 할당은 C 언어의 메커니즘입니다. 이를 통해 프로그램은 런타임에 메모리 공간을 동적으로 할당하고 해제할 수 있습니다. 동적 메모리 할당을 사용하면 프로그램은 컴파일 타임에 메모리 크기를 결정할 필요 없이 필요에 따라 동적으로 메모리를 할당할 수 있습니다. 이를 통해 프로그램은 메모리를 보다 유연하게 관리하고 사용 가능한 시스템 리소스를 효율적으로 사용할 수 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제