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

minho9259님의 프로필 이미지

작성한 질문수

홍정모의 따라하며 배우는 C++

7.9 함수 포인터

함수 포인터 크기

작성

·

267

1

double foo()

{

return 5.0;

}

int goo()

{

return 6;

}

int main()

{

std::function<int()> fcnptr; // int를 반환하고 매개 변수가 없는 함수 포인터 변수 fcnptr 선언

cout << sizeof(fcnptr) << endl; // 40

fcnptr = goo;

cout << fcnptr();

return 0;

}

함수 포인터도 함수의 주소를 기억하는 변수니까 4bytes를 

차지하지 않을까? 싶어서 sizeof를 해봤는데 40이라는 수가 나오네요. 

왜 40이라는 수가 나왔는지 궁금해서 메모리 영역, 컴퓨터 동작 원리 등등을 찾아봤지만 끝내 해답을 얻지 못했습니다.

40이라는 숫자가 어떻게 나온 것일까요

답변 1

1

홍정모님의 프로필 이미지
홍정모
지식공유자

sizeof(포인터)를 하신 것이 아니라 sizeof(std::function<int()>)를 하신거네요.