동적 메모리 할당 1

소스 코드에서 변수나 배열을 만들 때, 프로그램을 실행하는 순간 사용할 메모리 양 고려 메모리에 주소가 할당된 경우일반적으로 정적 메모리그것은 말한다. 하지만 프로그램 실행 중 메모리 할당필요할때가 있습니다 동적 메모리 과제그것은 말한다.

그렇다면 동적 메모리를 사용하는 이유는 무엇입니까? 정적 메모리프로그램을 실행하기 전에 인코딩된 크기만큼 할당됩니다. 그런 실행 중에는 크기를 변경할 수 없습니다.따라서 사이즈 변경을 위해서는 개별적으로 코드변경이 필요하며, 메모리로 인한 비효율적. 그래서 동적 메모리프로그램이 실행되는 동안에도 사용자가 사용할 배열의 크기만큼 지정그래서 스토리지를 보다 효율적으로 사용할 수 있습니다..

동적 메모리 할당 – 1차원 배열 생성

이제 동적 메모리를 통해 배열을 생성하는 구조를 살펴보겠습니다.

#포함하다

무효 메인() {
정수 *파();
pa = (int*)malloc(sizeof(int)*3);
무료 (PA)
}

문자열 변환 및 동적 메모리 관리와 같은 기능을 포함하는 C 언어 라이브러리 중 하나입니다. malloc 함수 및 free 명령 사용필요한 라이브러리입니다.

malloc 함수~이다 메모리를 동적으로 할당하는 데 사용() 안의 작은 숫자의 바이트 크기만큼 메모리를 할당해주는 기능으로, 반환 시작 주소는 함수이므로 시작 주소를 저장할 포인터를 만들고 포인터에 주소를 저장합니다.

무료 영장프로그램이 끝날 때 동적으로 할당된 메모리 해제이를 수행하는 데 사용되는 명령입니다. free 명령을 사용하는 이유는 동적으로 생성된 변수와 배열이 자동으로 회수되지 않기 때문입니다.

가변 영역에는 세 영역이 있습니다. 함수가 호출되어 종료될 때까지 사용하다 스택 영역 변수(로컬변수, 파라미터), 프로그램이 시작하고 끝날 때까지 사용하다 데이터 범위 변수(전역 변수), 필요에 따라 생성하다 힙 공간 변수이 동적으로 할당된 변수는 힙 영역 변수에 속하는데, 힙 영역 변수의 유효 수명은 고정되어 있지 않으므로 저장 공간(메모리)을 재활용하기 위해서는 유효 수명을 결정해야 합니다.

#include<stdio.h>
#include<stdlib.h>

void main() {
	int* pa;
	int sum = 0, i, j;
	float avg;
	printf("입력할 정수의 개수:");
	scanf_s("%d", &j, sizeof(int));
	pa = (int*)malloc(sizeof(int) * j);
	for (i = 0; i < j; i++) {
		printf("%d번째 정수입력:", i + 1);
		scanf_s("%d", &pa(i), sizeof(int));
		sum = sum + pa(i);

	}
	free(pa);
	avg = sum / (float)j;
	printf("sum:%d\n", sum);
	printf("avg=%5.3f\n", avg);

}


위의 코드는 동적으로 할당된 메모리를 사용하는 예입니다. malloc 함수를 보면 할당할 메모리의 크기로 “sizeof(int)*j”라고 쓰여 있다. 그건 할당할 공간은 입력할 정수의 수와 같습니다.무엇입니까 입력 가능한 정수 변수의 개수를 생성하려면오전.

또한 유형 변환은 “(int*)”로 작성됩니다. malloc 함수의 결과는 void 포인터입니다.(void *)이므로, 목적에 맞는 포인터 타입으로 변환즉, 정수 포인터에 저장하기 위해 결과를 정수 유형으로 변환해야 합니다.