동적 할당 배열 C++

동적 할당 배열 C++

2022-06-04 last update

6 minutes reading C++
배열은 C++에서 매우 중요한 데이터 구조로 유사한 유형의 요소를 저장하는 데 사용된다.수조는 주로 두 가지 다른 유형, 즉 정태와 동태로 나뉜다.정적 그룹의 크기는 코드에서 미리 정의된 것이고, 동적 그룹의 크기는 실행할 때 정의된 것이다.본고에서 우리는 C++의 동적 그룹을 명확하게 토론할 것이다.또한 Ubuntu 20.04에서 상세한 예시를 공유함으로써 분배와 해제에 특별히 관심을 기울일 것입니다.

C 언어에서 동적으로 할당된 배열 ++


동적 그룹의 크기는 실행할 때 정의된다고 우리는 이미 말했다.그러나 우리가 정적 그룹을 편리하게 사용할 수 있을 때 왜 동적 분배된 그룹을 먼저 필요로 하는지 물어볼 수도 있다.때때로, 당신은 이러한 상황을 만날 수 있습니다. 즉, 그룹의 크기가 처음에는 알 수 없었던 것입니다.이 경우, 실행할 때 사용자로부터 그룹 크기를 입력으로 얻을 수 있습니다.
그러나 정적 그룹에 대해서는 불가능하다. 정적 그룹의 크기가 코드에 정의되면 변경할 수 없기 때문이다.이것이 바로 동적 분배된 수조가 작용하는 곳으로, 운행할 때 필요한 크기의 수조를 정의할 수 있다."new"키워드를 사용하면 C++의 동적 그룹을 쉽게 만들 수 있습니다.본문 뒤에 정확한 문법을 천명할 것이다.
그러나 여기서 주의해야 할 점은 정적 수조는 항상 시스템의 창고에 만들어지고 프로그램이 종료되면 시스템 자체가 창고를 방출할 책임이 있다는 것이다.다른 한편, 동적 분배된 그룹은 항상 더미 위에서 만들어집니다. 동적 그룹이 차지하는 메모리를 수동으로 방출해야 합니다.이제 동적 분배 패턴의 사용법을 이해하기 위해 아래 토론의 예시를 보십시오.

Ubuntu 20.04에서 C++의 동적 할당 배열 사용


이 예에서, 우리는 당신에게 C++에서 동적 분배된 그룹을 사용하는 방법을 가르쳐 주고 싶습니다.실행할 때 동적 그룹을 설명하고 초기화하는 방법을 알려 드리겠습니다.그리고 동적 분배된 그룹의 요소를 보여 줍니다.마지막으로, 우리는 당신에게 어떻게 C++에서 동적 수조가 차지하는 메모리를 방출하는지 보여 드리겠습니다.이 모든 내용을 이해하려면 다음 그림에 표시된 코드를 보아야 합니다.

이 C++ 프로그램에서 우리는'main ()'함수를 가지고 있으며, 그 중에서 정수'num'을 정의했다.이 정수는 우리가 잠시 후에 만들 동적 그룹의 크기에 대응합니다.그리고 터미널에 동적 그룹에 선택한 크기를 입력하라는 메시지를 표시합니다.이후에 우리는 이 크기를 사용자의 입력으로 삼는다.그리고 "int*array=new int (num)"의 도움말로 실행할 때 "num"변수의 크기와 같은 동적 그룹을 설명합니다.배열은 이 배열의 이름을 가리킨다.
그 후에, 우리는 터미널에 사용자가 이 그룹의 요소를 입력하도록 요구하는 메시지를 다시 표시합니다.이 메시지 뒤에는'for'순환이 있습니다. 이 순환은 그룹의 크기, 즉num로 교체됩니다. 이 순환에서, 우리는 이 동적 그룹의 요소를 사용자의 입력으로 합니다.
동적 그룹을 채운 후, 우리는 터미널에 그 요소를 표시하기를 희망합니다. 우선 "cout"문장의 도움말로 메시지를 표시합니다.그리고 우리는 동적 그룹의 크기를 다시 한 번 훑어보는 또 다른'for'순환이 있다.이 순환에서, 우리는 터미널에만 그룹 요소를 표시했다.이후, 우리는 이 동적 수조가 차지하는 메모리를 방출하려고 합니다. "delete []array"문장을 사용했습니다.마지막으로, 안전을 위해서 우리는'array=NULL'문구를 사용하여 동적 그룹의 NULL 인용을 삭제했습니다. 우리는 방금 동적 그룹의 메모리를 방출했습니다.
이 코드를 작성한 후, 우리가 그것을 컴파일하고 실행할 때, 우리는 먼저 동적 그룹의 크기를 입력해야 한다.다음 그림과 같이 동적 배열의 크기가 "5"가 되기를 원합니다.

우리는 동적 그룹의 크기를 입력하기만 하면 그것을 채워야 한다.이를 위해 다음 그림과 같이 1에서 5까지의 숫자를 입력했습니다.

동적 배열을 채우고 Enter 키를 누르면 요소가 터미널에 인쇄됩니다.또한 동적 메모리 할당 해제가 발생하여 다음 그림과 같이 터미널에서도 이에 대한 알림이 표시됩니다.

이제 우리는 같은 코드를 약간 조정할 것이다.지금까지 우리는 C++에서 동적 그룹을 초기화하고 터미널에 그 요소를 표시하는 방법을 배웠다.비록 우리도 프로그램에 이 메모리를 방출하는 코드를 넣었지만, 동적 메모리가 성공적으로 방출되었는지 확인할 수 없습니다.이를 위해, 우리는 동적 메모리를 방출한 후에 그것의 일부분에 접근하려고 시도할 것이다.액세스에 성공하면 메모리 방출이 제대로 이루어지지 않았음을 의미합니다.
그러나 메모리를 방출한 후에 이 메모리에 접근할 때 오류 메시지가 발생하면 사용한 동적 메모리가 성공적으로 방출되었다는 것을 의미합니다.이 점을 이해하려면 다음 수정된 코드를 확인해야 합니다.

이 수정된 C++ 코드에서, 우리는 프로그램의 끝에 한 줄, 즉cout우리가 이 코드를 컴파일하고 실행할 때, 그 코드의 성능은 매우 좋았지만, 마지막 줄을 실행할 때, 오류가 발생했습니다. 이것은 세그먼트 오류와 관련이 있습니다. 이것은 사실상 더 이상 존재하지 않는 메모리 위치에 접근하려고 시도하고 있음을 의미합니다.이것은 첨부된 이미지에 표시됩니다.
이것은 동적 수조의 분배 해제가 성공적으로 진행되었다는 것을 의미한다.이 출력은 더 이상 존재하지 않는 메모리 위치에 접근하려는 시도는 실행 중 오류를 초래할 뿐 컴파일 오류를 초래하지 않는다는 것을 보여 줍니다.이것은 이러한 코드가 항상 성공적으로 컴파일될 수 있다는 것을 의미하며, 실제 코드를 실행하기 전에, 이러한 오류를 포착할 수 없습니다.

결론


본고는 Ubuntu 20.04에서 C++에서 동적 분배된 그룹을 사용하는 방법을 가르치고자 합니다.이를 위해 우리는 먼저 C++에서 동적 분배 그룹을 사용하는 필요성을 강조했다.그리고 C++에서 동적 그룹을 만들고 처리하는 방법을 설명하는 상세한 예시를 소개합니다.이 밖에 우리는 동적 수조의 방출 방법을 공유했다.이 안내서를 읽으면 C++에서 동적 그룹을 처리하는 것에 대해 기본적인 이해를 하게 될 것입니다.