• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

함수 포인터 크기

20.02.07 12:54 작성 조회수 223

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()>)를 하신거네요.