C++에서 new와 malloc의 차이점은 무엇인가요?
글쓴이: linuxs / 작성시간: 화, 2004/10/05 - 2:10오전
C++에서 new와 malloc의 차이점이 무엇인지 궁금하군요?
오늘 코딩을 하는데 클래스 A 타입의 a를 포인터로 선언하고 A만큼 할당할려고 했는데 실행중 malloc에서는 에러가 발생했고 new로 했을경우는 발생하지 않았습니다.
문서를 찾아보니 malloc은 힙영역에 메모리를 할당하고 기타 정적인 변수는 스텍에 할당된다고 하네요.. new로 할당해서 힙에 할당되겠죠? 이런 문제는 아닌것같고 타입때문에 그런것 같은데..
조언부탁드립니다.
예)
A *a
a=(A *)malloc(sizeof(A))
a->in() <-- 이부분에서 에러 in이라는 함수는 A 클래스 안에 있는 함수
++++++++++++++++++++++++++++++++++++++++++++
A *a
a=new A
a->in() <-- 에러 발생하지 않음
Forums:
C++에서는 malloc를 쓸 필요가 없으며 써서도 안됩니다. 클래스가
C++에서는 malloc를 쓸 필요가 없으며 써서도 안됩니다. 클래스가 만들어질 때에는 단순한 메모리 할당만 이루어지는 것이 아니라 생성자 호출 및 기타 복잡한 동작들이 이루어지기 때문입니다. C++에서 malloc는 잊어버리십시오.
C++에서 new 연산은 malloc 한뒤 this에다가 할당받은 값을
C++에서 new 연산은 malloc 한뒤 this에다가 할당받은 값을 넣고 생성자 함수를 부른다고 생각하시면 됩니다.
구현상 new는 c의 malloc을 기반으로 만들어지게 됩니다. 같은 heap manager를 사용해야하기 때문이지요.
---
http://coolengineer.com
예전 부터 궁금해왔던건데.. new로 할당한 변수를 재할당 하려면 어떻게
예전 부터 궁금해왔던건데.. new로 할당한 변수를 재할당 하려면 어떻게 하나요?
c에서는 malloc -> realloc을 썼었는데...new는 모르겠네요...
realloc을 사용해야 하는 경우처럼 메모리를 재 할당해야 하는 경우가
realloc을 사용해야 하는 경우처럼 메모리를 재 할당해야 하는 경우가 생길 수 있다면.
표준 템플릿 라이브러리를 사용하시길 권합니다.
상황에 따라서 list, vector, deque, set을 골라서 사용하시면 됩니다.
vector만 익숙해져도 많은 골치꺼리에서 해방이 될 수 있습니다. :D
높이 날다 떨어지면.
아푸다 ㅡ,.ㅡ
댓글 달기