컴퓨터 언어/C++

[C++] C++ 6일차 메모리1 : new and delete 포인터1

훈츠 2020. 4. 4. 10:41
반응형

안녕하세요. 훈츠입니다. 금일은 C 언어 에서 동적 메모리 할당에 해당하는, malloc 과 free 함수에 대체되는 new 와 delete 키워드에 대해 포스팅 해보겠습니다. 

C 언어의 포인터와 메모리 할당 해제 관련글을 한번 보고 오시는것도 좋습니다. 

https://rain2002kr.tistory.com/150?category=382972

 

[C] C언어 6일차 포인터

안녕하세요. 훈츠 입니다. 이번 시간에는 포인터에 대해 정리 해보려고 합니다. 어렵게 느껴졌는데 차근차근 정리 해보니 정리가 되네요. 같이 한번 보시죠. 포인터 메모리 에서 데이터를 읽어오는 방법 메모리..

rain2002kr.tistory.com

포인터의 사용 방법과 포인터 접근 하는 방법 모두 동일 합니다. 하지만 동적 메모리 할당 하는 malloc() 과 free() 함수 대신 new 와 delete 를 사용하는 것이 다릅니다. 저처럼 C 를 학습 하고 C++ 학습하시는 분은 비교를 통해서 학습을 하면 좀더 효율이 높은것 같네요. 개인적 의견 입니다. 

  • C 언어와 마찬가지로 동적 으로 메모리 생성한 것은 반드시 해제 해주어야 메모리릭이 발생하지 않습니다. 
  • new 로 메모리 할당이 실패하면, 0을 리턴합니다. 
  • 널 포인터를 delete 해도 상관 없습니다. 
  • 고정 메모리 ( 변수 , 배열 )
  • 동적 메모리 
    • -> Heap 메모리 영역 
구분 메모리 할당 메모리 해제
C 언어 malloc() free()
C++ 언어 new  delete

※ new 와 delete 의 대상 

  • 포인터 , 객체 

new 형식 

  • new type 
  • new type(초기값)
  • new type[개수]
#include <iostream>
#include <fstream>
using namespace std;
int main()
{

	int* ptr;
	ptr = new int;
	*ptr = 4;
	cout << "ptr :" << *ptr << " Add " <<ptr << endl;

	int* ptr1;
	ptr1 = new int(13);
	cout << "ptr1 :" << *ptr1 <<" Add "<<ptr1 << endl;

	int* ptr2;
	ptr2 = new int[4];
	for (int i = 0; i < 3; i++) {
		ptr2[i] = i;
		cout << "ptr2["<<i <<"] :" << *ptr2 + i << " Add " << ptr2 + i << endl;
	}
		
}

 

반응형