int*든 float*든 전부 4바이트짜리 자료형이고
얘네의 접두사(int, float)는 *을 이용해서 주소가 가리키는 값을 가져오거나 동적할당으로 해당 타입의 메모리를 할당 할때만 관여되는거 맞음?
void*도 마찬가지지만 가리키는 값이 어떤 형인지 정의가 안되어있는거고
얘네의 접두사(int, float)는 *을 이용해서 주소가 가리키는 값을 가져오거나 동적할당으로 해당 타입의 메모리를 할당 할때만 관여되는거 맞음?
void*도 마찬가지지만 가리키는 값이 어떤 형인지 정의가 안되어있는거고
포인터 크기는 32비트 프로그램이면 4바이트 64비트면 8바이트
정수 자료형이 x86, x64에따라 변하는이유맞음?
정확한 명칭는 모르겠는데 LP64, LLP64 같은 아키텍처? 컴파일러? 하여튼 그거에 따라 달라지는거고 정수 자료형이 x86, x64에 따라 달라지는건 근본적으로는 다른 이유임
데이터 모델이라고 부른다네
정수 자료형이랑은 좀 다르지ㅇㅅㅇ 포인터는 32비트 시스템에서는 메모리주소를 32비트(4바이트)로 64비트시스템에선 64비트(8바이트)로 써서 그대로 4바이트/8바이트인건데 정수 자료형같은 경우에는 그냥 가장 적절한 크기를 쓰는거라
정수/부동소수점 자료형이나 포인터나 둘다 크기가 표준에 정해져있지않고 구현체마다 정해지는거지만 포인터 크기는 앵간하면 32비트 시스템이면 4바이트 64비트 시스템이면 8바이트일텐데 자료형은 ㄹㅇ루 구현체마다 다를 수 있음ㅇㅅㅇ 그래서 int32_t같은 자료형은 존재하는거고 ㅇㅅㅇ
포인터가 몇 바이트인지는 니가 어디서 코딩하고 있냐에 따라 달라진다는거만 빼면 대충 맞음
아주아주 정확하게 말하면 void* 가 다른 포인터 전부랑 호환되는거는 보장되는데 굳이 모든 포인터 크기가 같을 필요는 없음.. 근데 현실적으로 그런 요상한 시스템 볼 일이 없지
옛날엔 포인터 크기가 다 달랐음 90년대 도스시절
포인터간 캐스팅은 그 포인터가 가리키는 주소에 대상 타입 오브젝트가 있는게 아니라면 정상 동작 자체가 보장이 안됨
포인터 사리즈는 word 사이즈임 - dc App
팩트 qword이다
qword 사이즈임 - dc App
대댓들 word가 뭔지 모르노
몰라서 찾아봤는데 word 16 dword 32 qword 64 (64bit 기준) 이라네 - dc App
표준 보면 포인터 크기가 어떻게 정해지는지 명시해놓은 바 없음. 아키텍쳐마다, 플랫폼마다, 컴파일러마다 다를 수도 있음