C++에서 객체의 정적/동적 할당에 대해 궁금한게 있습니다 ㅎ
글쓴이: greathero / 작성시간: 금, 2013/03/01 - 11:03오후
A라는 클래스가 있고 A 타입의 객체를 사용할 때,
A aObj; <- 이게 정적으로 객체를 할당한거고
A* ap = new A(); <- 이게 동적으로 할당한거잖아요.
포인터 객체를 쓰면 어느 코드를 거쳐도 "delete를 하지 않는 이상" 객체가 살아있으니까
따라서 객체를 계속 살려두고 싶고 유연하게 조작할려면 포인터 객체를 쓰면 좋을거 같긴 합니다.
그런데, aObj 처럼 일반적인 객체를 aObj& 타입의 매개변수를 받는 함수에 넣어줘도 객체를 보전은 할 수 있잖아요.
물론 특정 scope를 넘어가면(A aObj가 선언된 곳의 block statement가 끝나면) stack에 있는 aObj의 정보는 사라지겠지만..
(제가 지금 제대로 알고있는거 맞나요?)
여튼, 객체를 언제 정적 할당 혹은 동적 할당하는게 좋은지를 제대로 알고싶습니다!
배열같은 경우는 메모리를 얼마 쓸지를 몰라서 동적 할당하는 것이 좋다. 뭐 이런건 알고있지만;
객체를 언제 정적 할당(그러니까 기본 객체로 타입을 선언)하는게 좋을지
혹은 언제 동적 할당을 하는게 좋을지 너무너무 알고싶습니다 ㅎㅎ
아시는 분들 도와주세요~
Forums:
int라는 걸 일단 생각해 보죠. int *a =
int라는 걸 일단 생각해 보죠.
라는 코드는 잘 돌아가는 바른 c++코드입니다만
이렇게 쓸 수 있다고 해서
언제 int a라고 할건지 위에처럼 할건지 고민하는 경우도 잘 없죠 ^^
음 그러니까 요점은
int쓰듯이 객체타입도 그냥 평소 int 쓰듯이 쓰면됩니다.
동적할당이 필요할때 new를 쓰면 되는거구요. ^^
그렇다면 일반적으로 객체를 쓸 때 동적할당이 언제 필요한가요?
이게 전 와닿지가 않아서ㅠㅠ 너무너무 궁금하네요.
동적할당이 필요할때. 를 알고싶어요~
그럼 그냥 쓰지 마세요. 그러다보면 동적할당이
그럼 그냥 쓰지 마세요.
그러다보면 동적할당이 필요한 때가 올 거예요.
피할 수 있을때 즐겨라! http://melotopia.net/b
.
.
그냥 간단하게 생각하시면 됩니다. 동적 할당이
그냥 간단하게 생각하시면 됩니다.
동적 할당이 필요할 때는 함수안에서 사용한 메모리가 함수가 리턴 되더라도 운영체제에 반환되지 않고 유효하게 유지 되더야하는 상황이면서 사용 할 메모리 크기가 일정하지 않고 동적으로 변하는 경우에 사용하시면 됩니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
댓글 달기