inflearn logo
강의

Course

Instructor

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

Dynamic Allocation #3

한번만 더 질문드립니다 ㅠㅠ

262

asd8888771554

17 asked

0

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

Monster& m1 = *( ( Monster* ) pointer );

m1._hp = 100;

 

m1._attack = 10;

 

m1._mp = 5;

 

free (pointer);

이런식으로 해도 작동이 되는데 혹시 제가 이해한게 맞는건지 정확하게 이해 한듯 느낌이 팍 왔는데 확인할 방법이 없어서 이렇게 질문드려봅니다

 

일단 pointer 이부분이 반환값이 void 형 주소값을 반환받는건데 Monster 이부분은 클레스 타입이므로 

Monster클레스 타입의 주소값을 Monster*로 포인터를 만들어 줬는데 이 주소값과 pointer 주소값이 서로 만들어진 형식이 한쪽은 void 고 한쪽은 class 이므로 

Monster* m1 = (Monster*) pointer  이런식으로 하는이유가

pointer 가 void 형식의 주소값인건 아는데 지금은 Monster*값을 쓸꺼야 하고 괄호를 열어서 (Monster*)이라는걸로 확인시켜 줬기 때문에 

Monster* m1에 정상적으로 이식이 된거고

여기서 

참조 형태로 바꾸고 싶어서 

Monster& m1으로 바꿨으니 void로 주소값을 반환 하는 pointer 가 참조형태로 탈바꿈? 하기 위해서 앞에 *을 하나 더 찍는방식으로 참조 타입으로 이식 됬다 라고 판단 되는데 그럼 처음 답변해주셨던 (Monster&)*((Monster*)pointer ) 이분부분에서 굳이 (Monster&)이부분은 삭제해도 어차피 (Monster*)이부분에서 class 탑입으로 바꾸겠다고 했으니 생략이 가능한게 아닌지 위에 코드도 동일하게 주소랑 값들이 다  나오는데 혹시 제가 착각하고 있는게 있는지 ......아니면 정상적으로 제가 생각한게 맞는지 궁금합니다 ㅠㅠ

 

질문이 길어져서 죄송합니다 열심히 공부해서 꼭 게임한번 만들어 보고 싶어서 문법 열심히 공부하는데 시골이라 학원도 없고 오직 온라인으로 밖에 공부할수 없는 이 슬픈 현실이 너무 절 괴롭게 합니다 ..... 소중한 시간을 항상 내주시는거에 대해 정말 감사드립니다 

C++

Answer 2

1

Rookiss

아니면 정상적으로 제가 생각한게 맞는지 궁금합니다 ㅠㅠ

네 정상적으로 생각하셨습니다. (Monster&)는 생략해도 됩니다.
잘 이해하셨는데 너무 스트레스를 받으시는군요 ㅎㅎ
하긴 포인터가 원래 좀 그렇긴 합니다.
원리를 알고 보면 굉장히 단순한건데~
처음 배울 땐 왜케 어려웠는지(?) 저도 모르겠네요.
위로의 차원에서 한 마디 드리자면,
저도 대학생 때는 포인터랑 C++이 너무 어려워서
(C++ = 뭐만 하면 크래시 나는 짜증나는 녀석)
코딩에 흥미를 잃고 대학교 과제만 깨작 깨작 제출하고 지내다가
대학원 때 와서 우연히 필요에 의해 게임 개발 공부를 하면서
다시 본격적으로 시작하게 되었습니다.
나이로 치면 28때 시작한거니, 아마 지금 시작하시더라도 저보다는 훨씬 빠르실거에요.
차근차근 하시면 뜻하시는 바를 이룰 수 있을거라 봅니다.
그리고 사실 학원이라고 해도 별거 없어요..
공부는 다 혼자 하는겁니다 화이팅

0

asd8888771554

편히 잠을 청할수 있겠네요 감사합니다 ^^

visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.

0

541

1

정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?

0

441

1

strcpy() 구현 관련 질문

0

513

1

빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?

0

452

1

클래스 타입의 포인터 질문합니다

0

546

1

입력값을 enum 값에 넣어주는거 이제 막혔나요?

0

497

1

템플릿 특수화 관련 질문

0

384

1

포인터 관련 질문합니다!

0

263

1

Unable to start assembler. Check your settings.

0

829

2

cpu선택

0

539

1

포인터 질문이 있습니다

0

322

1

20:35 에서 구조체 크기에 대한 질문입니다!

0

584

1

iterator 삭제관련

0

406

1

함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!

0

310

1

15 분 45초 대 질문

0

308

0

스택 프레임 질문합니다!

2

306

1

오른값 참조 in 게임

0

384

0

동적할당 질문이 있습니다

0

449

1

안녕하세요 메모리에 대해 질문드립니다.

0

304

1

함수객체 의 매개변수

0

358

1

복사생성자

0

434

1

main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요

0

419

1

포인터 실습 강의를 보고 궁금한게 있습니다.

0

353

1

스택 오버플로우

2

790

1