포인터 주소를 가져오는 문제 입니다.

프로그래밍 일반에 관한 포럼입니다.

Moderator: 류광

Locked
비회원

포인터 주소를 가져오는 문제 입니다.

Post by 비회원 »

다름이 아니오라
포인터 주소를 구조체 멤버변수인 int 자료형에 넘겨서
주소 값으로 객체를 찾으려고 합니다.

아래와 같은 예제처럼 넘기려고 하는데요.
문제가 생길수 있는 예외사항 들이 무엇이 있을지 궁금해서 질문 드립니다.

Code: Select all

class CTemp
{
public:
	CTemp() {}
	~CTemp() {}

	int nTemp;
};

int main()
{
	CTemp* p = NULL;
	p = new CTemp;

	p->nTemp = 100;

	int nTestAddress = (int)p;	

	CTemp* q = NULL;
	q = (CTemp*)nTestAddress;
...
}
park
Posts: 189
Joined: 2008-07-30 09:04
Location: bandi

Post by park »

64비트에서는 포인터가 64비트이기 때문에 32bit int 를 통해서 포인터값을 넘길 수 없습니다.

굳이 int 타입을 써야 한다면 INT_PTR 같은걸 써야합니다.
비회원

감사합니다

Post by 비회원 »

감사합니다

32비트 64비트를 제외하고는 다른 예외가 생길 예외는 없는지요?
비회원

Post by 비회원 »

일부 예외는 있겠지만 일반적으로 어떤 서브 시스템, 어떤 프로세서든 포인터를 정수형으로 계산하려면 size_t를 사용하세요.
비회원

Post by 비회원 »

감사합니다.
Locked