Notice
Recent Posts
Recent Comments
공부중
[C/C++] malloc, new 본문
반응형
퇴사를 하고 백수생활을 한지 어느덧 한달이 지났다
뭐 로또가 된게 아니니 공부를 계속해서 취업준비도 해야되겠다 생각이 들고 뭐.... 어 ....
아무튼 게임잡에 글 올렸는데 우연치 않게 바로 연락와서 면접을 봤는데 탈탈 털린뒤 과거의 내가 이런게 있었지 하고 기록을 하려고 또 글을 끄적인다.
이번글은 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);
이정도??
반응형
'Programing > C, C++' 카테고리의 다른 글
[C/C++] Right to Left Rules(오른쪽-왼쪽 규칙) (1) | 2020.11.14 |
---|---|
[C++] const 위치에 따른 상수화 되는 대상 (0) | 2020.11.09 |
[C++] 배열을 delete[] 가 아닌 delete로 제거했을 경우? (2) | 2019.04.08 |
[C++] do while 문에서의 continue??? (0) | 2018.11.04 |
[C++] 상속관계에서의 생성자 소멸자 호출 (0) | 2018.11.04 |