메모리 C++ 할당 방법

메모리 C++ 할당 방법

2022-06-04 last update

7 minutes reading C++
언제 우리가 데이터를 처리하려고 하든지 간에 우리는 그곳에 저장하고 언제 어디서나 접근할 수 있도록 메모리를 분배해야 한다.따라서 어떤 프로그래밍 언어를 사용하든 메모리 분배의 개념을 이해하는 것이 중요하다.C++는 메모리 관리와 분배와 관련된 매우 광범위한 개념도 있다.이 문서에서는 Ubuntu 20.04에서 C++의 메모리 할당 방법을 간략하게 설명합니다.

Ubuntu 20.04에서 C++의 메모리 할당:


메모리는 C++의 다른 엔티티에 정적 또는 동적으로 할당될 수 있습니다.정적 분배 메모리를 통해 우리는 본질적으로 시스템 창고에서 메모리를 분배하는 것을 가리키며, 동적 분배 메모리를 통해 우리는 시스템 더미에서 메모리를 분배하려고 한다.정적 메모리는 컴파일할 때 분배되고, 동적 메모리는 실행할 때 분배된다.그 밖에 운영체제는 정적 분배 메모리의 방출을 처리하고 동적 분배 메모리는 반드시 프로그래머가 수동으로 처리해야 한다.또한 할당할 메모리 크기를 미리 알 수 없을 때 동적 메모리 할당을 선택하십시오.
그러나 우리가 C++의 메모리 분배를 전문적으로 토론할 때, 우리는 통상적으로 동적 메모리 분배를 가리킨다. 왜냐하면 그것은 자세하게 처리해야 하기 때문이다.이것은 운영체제가 동적 메모리 분배의 책임을 지지 않기 때문이다. 이것이 바로 프로그래머 자신이 반드시 지능적으로 이렇게 해야 하는 이유이다.우리는 C++프로그래밍 언어가 변수, 바늘, 수조, 대상 등 서로 다른 실체로 구성된 것을 알고 있기 때문에 동적 메모리 분배도 이러한 실체의 다양성에 따라 서로 다른 유형으로 나뉜다.본고의 아래 부분에서 우리는 Ubuntu 20.04의 C++에서 동적 분배 메모리를 배울 것이다.

Ubuntu 20.04에서 C++ 메모리 할당 방법:


C++의 동적 메모리 할당은 크게 세 가지 방법으로 나눌 수 있다.다음은 C++에서 동적 메모리 할당의 세 가지 방법에 대해 자세히 설명합니다.

메서드 #1: C++ 포인터의 메모리 할당:


C++에서 포인터의 메모리도 동적으로 할당할 수 있습니다.이러한 방법을 알려주기 위해 다음 그림과 같이 소형 C++ 코드를 작성했습니다.

이 프로그램에서, 우리는'main ()'함수를 가지고 있으며, 그 중에서'test'라는'float'형식 바늘을 설명합니다.우리는 시작할 때 이 포인터를'NULL'으로 초기화했습니다. 이 포인터에 쓰레기 값이 포함되어 있으면 쉽게 지울 수 있습니다.이후에 우리는 이 바늘을'새 부동점'으로 균형 있게 한다.이 단계에서 동적 메모리 분배는 이 C++ 프로그램의 실행 과정에서 진행될 것이다.그런 다음 24.43 값을 포인터에 할당하여 할당된 주소에 저장합니다.그리고 나서 우리는 터미널에서 이 값을 인쇄하려고 한다.우리는 이미 메모리를 이 바늘에 동적 분배했기 때문에, 프로그램이 끝날 때 수동으로 그것을 놓아야 한다.따라서 우리는 프로그램 끝에 "delete test"문장을 사용했습니다.
이제 이 프로그램을 컴파일하기 위해 아래의 명령을 사용했습니다.
$ g++ AllocateMemory.cpp –o AllocateMemory

그런 다음 다음 다음 명령을 사용하여 프로그램을 실행합니다.
$ ./AllocateMemory

이 프로그램을 실행할 때 포인터의 동적 분배 위치에 저장된 값이 터미널에 인쇄됩니다.

메서드 #2: C++ 중수 그룹의 메모리 할당:


마찬가지로 그룹의 메모리도 C++에서 동적으로 분배할 수 있다.이러한 방법을 알려주기 위해 다음 그림과 같이 소형 C++ 코드를 작성했습니다.

이 프로그램에서, 우리는'main ()'함수를 가지고 있으며, 그 중에서'integer'형식의 변수'size'를 설명하여 동적 그룹의 크기를 저장합니다.그리고 나서 우리는 터미널에 메시지를 인쇄해서 이 그룹의 크기를 입력했다.이후에 이 크기를 사용자의 입력으로 사용합니다.그리고 우리는 수조를 설명하고 "int*arr=NULL"과 "arr=new int[size]"를 사용하여 동적 메모리를 분배합니다.그리고 이 그룹의 요소를 사용자의 입력으로 사용하기를 원합니다. 이 때문에 "for"순환을 사용했습니다.그 다음에, 우리는 터미널에서 이 값을 모두 인쇄하려고 하는데, 이 때문에 우리는 또 다른'for'순환을 사용했다.마찬가지로, 우리는 이미 메모리를 이 그룹에 동적 분배했기 때문에, 프로그램이 끝날 때 수동으로 그것을 방출해야 한다.따라서 우리는 프로그램 끝에 "delete []arr"문장을 사용했다.
이 프로그램을 실행하면 다음 그림과 같이 배열의 크기를 입력하라는 메시지가 표시됩니다.

그런 다음 추가 이미지에 표시되는 배열의 요소를 입력해야 합니다.

마지막으로, 이러한 요소는 다음 그림과 같이 터미널에 인쇄됩니다.

메서드 #3: C++에서 객체의 메모리 할당:


이와 유사하게 클래스 대상의 메모리도 C++에서 동적으로 분배할 수 있다.이러한 방법을 알려주기 위해 다음 그림과 같이 소형 C++ 코드를 작성했습니다.

이 프로그램에서 우리는 우선'Sample'이라는 클래스를 만들었다.이 클래스에는 두 개의 공공 구성원 함수만 있는데, 하나는 구조 함수이고, 다른 하나는 분석 함수이다.이 두 구성원 함수에서, 우리는 모두 터미널에서 메시지를 인쇄했다.그 다음에 "main ()"함수가 생겼습니다. 그 중에서 "Sample"클래스 대상의 동적 그룹을 만들었습니다.이 수조의 크기에 따라 이런 구조 함수와 분석 함수를 호출할 것이다.그리고 메모리를 이 대상 그룹에 동적 분배했기 때문에, 프로그램이 끝날 때 수동으로 풀어야 합니다.따라서 우리는 프로그램 끝에 "delete []sample Array"문장을 사용했다.
이 프로그램을 실행할 때 "Sample"클래스의 구조 함수와 분석 함수는 두 번 호출됩니다. 대상 그룹의 크기는 "2"이기 때문입니다. 아래 그림과 같습니다.

결론:


본고는 Ubuntu 20.04에서 C++의 메모리 할당 방법을 논의하고자 합니다.우리는 먼저 C++에서 메모리 분배의 두 가지 방식, 즉 정태와 동태를 토론했다.그러나 본고의 범위에서 볼 때 우리가 더욱 흥미를 느끼는 것은 C++에서 동적 메모리 분배의 개념을 탐색하는 것이다.따라서 우리는 C++에서 동적 메모리를 분배하는 세 가지 다른 방법을 공유했다.이 예시를 완성하면 Ubuntu 20.04의 C++에서 메모리 할당과 방출을 쉽게 처리할 수 있습니다.