1.new와 delete란?

C언어에서 동적할당 malloc과 free와 동일한 역할을 함.

new를 사용해서 힙에 동적할당하고 delete를 사용하여 해제

#include <iostream>

using namespace std;
struct  Po
{
	int a;
	int b;
};

int main()
{
	//C style
	Po* ptr = (Po*)malloc(sizeof(Po));
	free(ptr);

	//C++ style
	Po* ptr = new Po;
	delete ptr;

	return 0;
}
2.new와 delete란 ? 

하지만 malloc과 new는 같지 않다.

c++의 new는 훨씬 다양한 것을 해줌.

new는 힙에 메모리할당을 해주고 생성자를 호출해주며 해당 타입으로 변환.

new

  • 메모리 할당
  • 생성자 호출
  • 타입변환

delete

  • 소멸자 호출
  • 메모리 해제
#include <iostream>

using namespace std;
struct  Po
{
	int a;
	int b;
};

class po2
{
public:
	po2()
	{
		cout << "2) new에 의해서 생성자 호출됨 " << endl;

	}
	~po2()
	{
		cout << "3) delete에 의해 소멸자 호출됨" << endl;
	}

};

int main()
{
	//C style
	Po* ptr = (Po*)malloc(sizeof(Po));
	free(ptr);

	//C++ style
	Po* ptr2 = new Po;
	delete ptr2;

	//C style
	po2* ptr3 = (po2*)malloc(sizeof(po2));
	cout << "1) malloc - 메모리 할당 끝 :생성자는 불름?" << endl;
	free(ptr3);
	 
	//C++ style 
	po2* ptr4 = new po2();
	cout << "1)malloc -= 메모리 할당끝 : 생성자는 ?" << endl;
	delete (ptr4);

	return 0;
}

출처 : https://blockdmask.tistory.com/302

'C++' 카테고리의 다른 글

[C++] char*, const char*, char* const  (0) 2020.07.21
C++ assign (vector, map)  (0) 2020.07.16
C++ iterator, auto  (0) 2020.06.29
C++ ODBC (Open DataBase Connectivity)  (0) 2020.06.26
C/C++ 문자열 분리 함수 (strtok, strtok_s) 유용 warning발생  (0) 2020.06.26

+ Recent posts