강의

멘토링

커뮤니티

Inflearn Community Q&A

kibumkim's profile image
kibumkim

asked

[MMORPG Game Development with C++ and Unreal Series] Part 1: Introduction to C++ Programming

Pointer finish

*ptr 부분 크래쉬 이유

Written on

·

295

0

*ptr이 매개변수로 받을때부터 TestPtr에서 &a를 받았는데  어째서 그값이 a[100] 주소를 가르키고있고 그 상태에서*ptr=0x12341234를 넣었을떄 어떻게 크래쉬가 나는지 이해가 되지않아 이렇게 질문을드립니다

 

C++

Answer 1

1

Rookiss님의 프로필 이미지
Rookiss
Instructor

일단 TestPtr()이라는 함수가 굉장히 문제가 많은 함수고
스택 영역의 로컬 주소를 저렇게 밖으로 반환하는 것 자체가 절대 해서는 안 되는 행동입니다.

스택 영역은 함수가 종료되고 다른 함수가 호출되면 재사용하는데
운 나쁘게 저렇게 영역이 겹치고 있다면 엉뚱한 메모리를 건드릴 수 있는 것이죠.

[스택 프레임] 구조는 안 보고도 그릴 수 있을 정도로
의외로 중요한 부분이니 완전히 이해를 해야 합니다.

kibumkim님의 프로필 이미지
kibumkim
Questioner

TestPtr로인해 로컬주소가 밖에 노출되었고 TestWrong 스택프레임 영역에 겹쳐져서 그안에 메모리를 건드려가지고 오류가 발생했단거군요. 답변감사합니다

kibumkim's profile image
kibumkim

asked

Ask a question