공부중

[C/C++] malloc, new 본문

Programing/C, C++

[C/C++] malloc, new

곤란 2019. 9. 20. 13:47
반응형

퇴사를 하고 백수생활을 한지 어느덧 한달이 지났다

뭐 로또가 된게 아니니 공부를 계속해서 취업준비도 해야되겠다 생각이 들고 뭐.... 어 ....

아무튼 게임잡에 글 올렸는데 우연치 않게 바로 연락와서 면접을 봤는데 탈탈 털린뒤 과거의 내가 이런게 있었지 하고 기록을 하려고 또 글을 끄적인다.

 

이번글은 malloc과 new의 차이이다.

솔직히 말해서 나는 순수 C(?)를 아예 손도 안대고 살아왔던터라 ( 독학을 그냥 class 없는 C++으로 시작했다. 후우... )

면접시 깊은 답변은 못했지만 이번에라도 알아가야하지 않겠는가 ㅠ

 

예제 코드는 아래와 같다.

#include <iostream>

class MyClass
{
public:
	MyClass() { std::cout << "생성자 call" << std::endl; };
	~MyClass() { std::cout << "소멸자 call" << std::endl; };
};

int main()
{
	MyClass* foo1 = new MyClass();
	delete foo1;

	MyClass* foo2 = (MyClass*)malloc(sizeof(MyClass));
	free(foo2);

	return 0;
}

 

출력결과는 아래와 같다.

아마 면접관분께서 원하는 답변은 위와 같을것 같다.

 

new와 malloc의 가장 중요한 차이는 생성자 소멸자 호출의 차이가 아닐까 생각해본다.

 

그 외에 다른 차이점은...

new는 operator지만 malloc은 함수라는점..

new는 사이즈를 알아서 판단하지만 malloc은 사이즈를 전달 받는다는점과 리턴형이 void*이기 때문에 형변환을 거쳐야된다는점.

 

음.. 그 외에 또 있으려나???

 

동적할당과 동시에 값을 넣을수 있는점???

int *foo = new int(10);

이정도??

반응형