인프런 커뮤니티 질문&답변

롤로노이님의 프로필 이미지
롤로노이

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

동적 할당 #3

new / delete 던 malloc / free 던 *말구 &값으로 넘기는법은 없는건가요?

작성

·

288

0

class Monster

{

public:

int _hp;

int _attack;

int _mp;

};

void* pointer = malloc (sizeof (Monster));

 

Monster* m1 = (Monster*) pointer ;

m1->_hp = 100;

m1->_attack = 10;

m1->_mp = 5;

 

free (pointer);

 

요기서 포인터 부분을 전부

void* pointer = malloc (sizeof (Monster));

 

Monster& m1 = (Monster&) pointer ;

m1._hp = 100;

m1._attack = 10;

m1._mp = 5;

 

free (pointer);

 

return 0;

이런식으로 바꿔줬습니다 메모리까지는 정상적으로 할당 하는듯 보이는데 마지막 free에서 예외가 발생했다고 정지가 되버리네요 혹시 여기서 &방식으로 참조방식으로 만들수는 없는건가요?

답변 2

0

롤로노이님의 프로필 이미지
롤로노이
질문자

감사합니다 아무리 해도 안됬는데  일단 포인터강의를 여러번 다시 봐야할듯 하네요 완벽하게 이해했는줄 알았는데 아직 80%정도 밖에 이해를 못했었던듯 합니다 반복 기계적으로 봐서 구조가 머리에 강제로 들어갈때까지 다시 봐야 겠네요 ㅋㅋ

Rookiss님의 프로필 이미지
Rookiss
지식공유자

저건 좀 특이 케이스이긴 합니다.
그냥 참조를 사용할 땐 포인터와 다르게 그냥 
실제 객체를 복사하듯 문법적으로 사용한다고 기억하시면 편리합니다.

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

살짝 이상한 시도이긴 하지만, 문법적으로 안 되진 않습니다.
다만...



이렇게 해야 합니다.
참조값을 사용할 땐 마치 해당 객체를 '바로' 사용하듯 해야 합니다.
(즉 어떻게든 Monster*기 아닌 Monster로)
그런데 작업하신 코드에서는 포인터(주소값)을
엉뚱하게 참조값에 대입해서 문제가 일어난겁니다.

롤로노이님의 프로필 이미지
롤로노이

작성한 질문수

질문하기