2010-08-13 5 views
0

Mach IPC을 통해 개체에 대한 포인터를 int으로 캐스팅 한 다음 개체로 다시 캐스팅하여 포인터를 보낼 수 있습니까? 그 일이 어떻게 될 수 있습니까?Sendind는 다른 프로세스에 대한 포인터를 사용하고 있습니까?

CALayer 개체를 다른 프로세스로 보내려고합니다. Mach IPC을 통해 원본 개체를 보낼 수 있다고 생각하지 않습니다.

+0

Mac OS X이 지원하는 일부 아키텍처에서 포인터가 int보다 크기 때문에 int 형으로 캐스팅하면 가능합니다. 포인터를 캐스팅하면 그 부분이 제거되고 수신 프로세스는 다른 부분 만 수신합니다. 또한 Mach 포트보다 더 높은 수준의 IPC 형태 인 Cocoa Distributed Objects를 통해 Cocoa 객체를 보낼 수 있습니다. –

답변

2

포인터는 원래 프로세스의 메모리와 관련이 있기 때문에 작동하지 않습니다. 다른 프로세스에 포인터를 보내면 운이 좋으면 잘못된 메모리를 가리 킵니다. 당신이 불행하다면, 그것은 유효한 메모리를 가리킬 것이지만, 당신이 원한 것과 완전히 다른 목적을 가리킬 것입니다.