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

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

운영자: 류광

Locked
비회원

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

전체글 글쓴이: 비회원 » 2009-11-27 14:08

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

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

코드: 모두 선택

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
전체글: 189
가입일: 2008-07-30 09:04
사는 곳: bandi

전체글 글쓴이: park » 2009-11-27 15:09

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

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

비회원

감사합니다

전체글 글쓴이: 비회원 » 2009-11-27 16:02

감사합니다

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

비회원

전체글 글쓴이: 비회원 » 2009-11-27 16:47

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

비회원

전체글 글쓴이: 비회원 » 2009-11-27 17:32

감사합니다.

Locked