크기 관련 문의
170
작성한 질문수 33
void Add(short& a)
{
cout<< sizeof(a) <<endl;
a = a + 1;
}
void Add(short* a)
{
cout << sizeof(a) << endl;
*a = *a + 1;
}
int main()
{
short num1 = 10;
Add(&num1);
Add(num1);
cout << num1 << endl;
}
-
32비트 환경이라고 했을 때 주소값은 4바이트를 받는 걸로 알고 있습니다.
포인터의 경우는 주소값을 가지는 자료형이기에 크기가 4바이트가 나오는 것은 이해를 했는데 레퍼런스도 마찬가지로 주소값을 받는다고 했는데 sizeof를 했을 때 주소값의 크기가 아닌 주소가 가지고 있는 값의 크기가 나오는 것에 의문이 있습니다.
레퍼런스의 경우는 주소값을 받아와서 같은 주소값을 공유하는 별도의 객체를 임시로 생성해준다고 생각하면 되는 걸까요?
답변 1
0
참조형이 '내부적으로' 주소를 받는 것이지만
C++ 관점에서는 '원본 객체의 별칭' 정도로 봐야 하고
주소와 관련된 내용은 숨겨져 있습니다.
따라서 sizeof를 하면 주소가 아닌
해당 객체 자체의 sizeof를 해주기 때문에 저런 결과가 나온 것입니다.
별도의 객체를 임시 생성하는 것은 절대 절대 아닙니다.
visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.
0
541
1
정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?
0
442
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
830
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





