• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

8번 질문

22.08.19 20:58 작성 조회수 127

0

당연히 보고 라이프 사이클이 생각나기는 했습니다.

 

그런데

스위치문을 빠져나와 delete p를 하면서 Archer의 소멸자 부분에서 

 

스택에 잡혀있는 pet을 delete할려고하여 크래쉬가 나는 것인가요?

(유효하지 않은 스텍 메모리를 delete할려고하여 생기는 문제인가요?)

 

아니면

 

delete라는 키워드는 힙메모리만 해제를 하는 키워드 이기 때문에

 

_pet이 가르키고있는 곳을 힙인지 아닌지 구별하고 힙이 아니라면 바로 크래쉬를 내는 것인가요?

답변 1

답변을 작성해보세요.

0

네 delete로 할당할 메모리는 반드시 new로 할당된 메모리여야 합니다.

다만 스택/힙을 구별할 정도로 높은 지능(?)이 있는 것은 아니구요.
new를 통해 할당한 메모리를 까보면 메모리 바로 이전에
 데이터 크기 / 다음 데이터 주소 등이 들어가 있는 헤더가 있고,
연결 리스트 형태로 되어 있는 것을 확인할 수 있습니다.
이런 부분을 건드리면서 크래시가 난다고 봐야겠죠.

starkshn님의 프로필

starkshn

질문자

2022.08.22

네 답변 감사합니다 그런데 

 

연결형 리스트 구조라는 말이

g현재 동적할당을 통해 Archer를 생성하였을 때 메모리 p의 구조가 이런데 p라는 객체가 또다른 동적 할당을 받은 _pet을 가르키고 있기 때문에 이것을 그냥 연결형 리스트 구조라고 말씀하신 건가요??