이 둘의 차이가 정확히 무엇인가요? 간단하게 말해서 malloc은 함수고 new는 연산자인 건가요? malloc과 new의 차이를 묻는 질문이 나온다면 어떤 형식으로 대답해야할지 모르겠어서 질문합니다.
new는 메모리 할당 후 클래스 생성자를 호출해줍니다. 그 외에도 세세한 차이점이 있겠지만 가장 큰 차이점은 이거인 것 같네요.
위에 분이 말씀하신것도 있고 거기다가 생성할시 malloc은 직접 크기를 정의를 해 줘야 하지만 new와 같은 경우는 구조체 단위 등등으로 생성을 바로바로 할 수 있습니다.
struct myclass { int a; int b; }
myclass* mypointer = new myclass;
malloc의 경우에는
mypointer = (myclass*) malloc(8); // 또는 malloc(sizeof(mylcass)); 이렇게 해도 좋습니다.
간단하게 요약을 하자면 1. malloc은 생성자와 소멸자의 호출이 일어나지 않는다. // 데이터 관리하기가 불변해진다. 2. 생성시 데이터 크기를 일일이 정해줘야한다. // 직접 숫자를 넣거나 sizeof라는 기능을 이용해서 크기를 직접 지정해 줘야한다.
물론 malloc,new 둘 다 사용할 수 있지만 malloc은 realloc을 할 수 있다는 장점(버퍼 크기 수정), new는 생성자를 생성하고 자료형에 대해 자유롭죠. 따라서 c++에서는 new를 쓰고 버퍼사이즈 변경할 경우에는 malloc을 쓰는게 좋쵸.
HIGH RISK, HIGH RESULT.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
malloc은 메모리 할당만 해주고
new는 메모리 할당 후 클래스 생성자를 호출해줍니다. 그 외에도 세세한 차이점이 있겠지만 가장 큰 차이점은 이거인 것 같네요.
위에 분이 말씀하신것도 있고 거기다가
위에 분이 말씀하신것도 있고 거기다가
생성할시 malloc은 직접 크기를 정의를 해 줘야 하지만
new와 같은 경우는 구조체 단위 등등으로 생성을 바로바로 할 수 있습니다.
struct myclass
{
int a;
int b;
}
myclass* mypointer = new myclass;
malloc의 경우에는
mypointer = (myclass*) malloc(8);
// 또는 malloc(sizeof(mylcass)); 이렇게 해도 좋습니다.
간단하게 요약을 하자면
1. malloc은 생성자와 소멸자의 호출이 일어나지 않는다.
// 데이터 관리하기가 불변해진다.
2. 생성시 데이터 크기를 일일이 정해줘야한다.
// 직접 숫자를 넣거나 sizeof라는 기능을 이용해서 크기를 직접 지정해 줘야한다.
C/C++의 차이도 있지요.
물론 malloc,new 둘 다 사용할 수 있지만 malloc은 realloc을 할 수 있다는 장점(버퍼 크기 수정), new는 생성자를 생성하고 자료형에 대해 자유롭죠. 따라서 c++에서는 new를 쓰고 버퍼사이즈 변경할 경우에는 malloc을 쓰는게 좋쵸.
HIGH RISK, HIGH RESULT.
댓글 달기