new delete operators c with examples
C ++의 새 / 삭제 연산자에 대한 모든 것을 살펴보십시오.
이전 튜토리얼에서 이미 C ++의 변수와 정적 배열을 보았습니다.
변수와 배열에 할당 된 메모리에 관한 한, 데이터 유형 (변수의 경우)과 배열에 제공되는 차원에 따라 컴파일러가 할당하는 것은 정적 메모리입니다.
컴파일러가 할당 한 메모리는 스택에 할당됩니다. 그러나 대부분의 경우 필요한 메모리의 정확한 양을 알지 못할 수 있습니다.
=> 여기에서 인기있는 C ++ 교육 시리즈를 읽어보십시오.
우리가 할 일은 우리가 원하는만큼의 메모리를 할당하고 할당 해제하는 것입니다. 이는 메모리를 동적으로 할당하여 수행됩니다. 정적 할당과 달리 동적으로 할당 된 메모리는 힙에 할당됩니다.
동적 메모리 할당은 컴파일러 할당 메모리로는 달성 할 수없는 가변 크기 메모리를 할당 할 수 있으므로 유용합니다. 우리는 필요할 때 메모리를 유연하게 할당하고 필요하지 않을 때는 할당 해제 할 수 있습니다.
그러나 이러한 용도 외에 동적으로 할당 된 메모리의 경우 메모리 할당을 해제하는 것은 사용자의 책임이라는 점을 기억해야합니다. 메모리 할당 해제를 잊으면 프로그램이 종료 될 때까지 메모리 할당이 해제되지 않는 메모리 누수가 발생합니다.
이로 인해 메모리가 너무 많이 사용되어 심각한 병목 현상이 발생할 수 있습니다.
학습 내용 :
동적 메모리 할당
C 언어는‘malloc’,’calloc’및‘realloc’함수를 사용하여 메모리를 동적으로 할당합니다. 이러한 함수로 동적으로 할당 된 메모리를 할당 해제하기 위해 'free'함수 호출을 사용합니다. C ++ 언어는 또한 메모리를 할당 / 할당 해제하기 위해 C 언어에서 이러한 함수를 지원합니다.
이러한 함수 외에도 C ++에는 동적 메모리를 관리하는 데 더 효율적인 두 가지 새로운 연산자가 도입되었습니다. 메모리 할당을위한 'new'연산자와 메모리 할당 해제를위한 'delete'연산자입니다.
이 자습서에서는 C ++ 언어의 new 및 delete 연산자에 대해 자세히 알아 봅니다.
'새로운'연산자
'new'연산자는 힙의 변수 또는 기타 엔티티에 메모리를 할당합니다.
'new'연산자의 일반 구문은 다음과 같습니다.
pointer_variable_of_data_type = new data type;
위에서 언급 한 데이터 유형은 C ++에서 지원하는 유효한 데이터 유형일 수 있습니다. 내장 데이터 유형이거나 클래스 및 구조를 포함한 사용자 정의 데이터 유형일 수 있습니다.
예를 들어,
YouTube 동영상을 다운로드 할 수있는 앱
int *ptr = NULL; ptr = new int();
위의 예에서 포인터 변수 'ptr'을 정수로 선언하고이를 null로 초기화했습니다. 그런 다음 'new'연산자를 사용하여 'ptr'변수에 메모리를 할당합니다. 힙에서 메모리를 사용할 수있는 경우 두 번째 문이 성공합니다. 사용 가능한 메모리가 없으면 new 연산자는 'std :: bad_alloc'예외를 발생시킵니다.
따라서 프로그램에서이 변수 나 엔티티를 사용하기 전에 새 연산자가 메모리를 성공적으로 할당했는지 확인하는 것이 좋습니다.
다음과 같이 new 연산자를 사용하여 변수를 초기화 할 수도 있습니다.
ptr = new int(10);
위의 예에서 포인터 변수“ptr”은 new 연산자를 사용하여 할당 된 메모리이며 동시에 할당 된 값은 10입니다. 이것은 C ++에서 또 다른 초기화 방법입니다.
배열에 'new'연산자 사용
'new'연산자의 또 다른 용도는 어레이에 메모리를 할당하는 것입니다. 여기서 배열에 할당 할 요소의 수를 지정합니다.
'new'연산자를 사용하여 배열 요소를 할당하는 예는 다음과 같습니다.
스파이를위한 최고의 앱은 무엇입니까
int* myarray = NULL; myarray = new int(10);
여기서 new 연산자는 정수 유형의 연속 요소 10 개를 포인터 변수 myarray에 할당하고 myarray의 첫 번째 요소에 대한 포인터를 반환합니다.
삭제 연산자
new 연산자를 사용하여 동적으로 할당 된 메모리는 프로그래머가 명시 적으로 해제해야합니다. 이를 위해 '삭제'연산자가 제공됩니다.
삭제 연산자의 일반 구문은 다음과 같습니다.
delete pointer_variable;
따라서 위의 ptr 변수에 할당 된 메모리를 다음과 같이 해제 할 수 있습니다.
delete ptr;
이 명령문은 'ptr'변수에 할당 된 메모리를 메모리 풀로 다시 해제합니다.
delete 연산자를 사용하여 배열에 할당 된 메모리를 해제 할 수도 있습니다.
예를 들어,위의 myarray 배열에 할당 된 메모리는 다음과 같이 해제 할 수 있습니다.
delete() myarray;
삭제 연산자와 함께 사용되는 아래 첨자 연산자에 유의하십시오. 이는 요소 배열을 할당 했으므로 모든 위치를 해제해야하기 때문입니다.
대신 우리가 그 진술을 사용했다면
delete myarray;
myarray는 배열의 첫 번째 요소를 가리 키므로 위의 명령문은 배열의 첫 번째 요소 만 삭제합니다. 아래 첨자 '()'를 사용하면 메모리가 해제되는 변수가 배열이고 할당 된 모든 메모리가 해제됨을 나타냅니다.
아래 프로그래밍 예제는 C ++에서 new 및 delete 연산자의 사용법을 보여줍니다.
// Example program #include #include using namespace std; int main() { int *ptr = NULL; ptr = new int(); int *var = new int(12); if(!ptr) { cout<<'bad memory allocation'< 산출:
메모리가 성공적으로 할당되었습니다.
* ptr = 10
* var = 12
myarray 값 : 12 34 5678 9 10
동일한 스크린 샷은 아래와 같습니다.

위의 코드 예제에서 new 및 delete 연산자의 사용법을 보여주었습니다. 'new'연산자를 사용하여 변수, 배열에 메모리를 할당하고 값으로 다른 변수를 초기화했습니다. 그런 다음 delete 연산자를 사용하여 이러한 항목을 삭제합니다.
결론
이것은 표준 데이터 유형에 관한 한 C ++의 new 및 delete 연산자에 관한 것입니다. 사용자 정의 데이터 유형에 대해 클래스 및 구조로 new 및 delete 연산자를 사용할 수도 있습니다.
C ++를 사용한 객체 지향 프로그래밍을 배울 때 객체 생성을위한 이러한 연산자의 사용법에 대해 자세히 알아 봅니다.
추천 도서