virtual function이 그것인데, 일반적으로 vtables의 item들은 heap area(아마도...)에 생성될것입니다.
따라서, virtual function이 있는 object의 경우, mmap()을 통한 완벽한 sharing은 힘들 듯 싶습니다..
차라리 bugiii님이 말씀하신 것처럼, allocator를 사용하시는건 어떨지...
allocator가 생겨난 이유중에 하나가 님과 같은 의도를 해결하기 위한것으로 알고 있습니다.
(내부적으로 pointer가 필요한 경우, offset으로 사용할것이라 추측됩니다.. :wink: )
저도 전에 같은 문제로 고민한 적이 있었습니다.new 연산자 오버
저도 전에 같은 문제로 고민한 적이 있었습니다.
new 연산자 오버라이딩을 하면 가능하다고 하더군요.
해보지는 않았지만 일리가 있는 이야기 같습니다.
성공하시면 좀 알려주세요^^
간단한 경우에는 placement new처음엔 좀 힘들지만 만들어 놓
간단한 경우에는 placement new
처음엔 좀 힘들지만 만들어 놓으면 좋은 메모리 관리자를 직접 제작
stl을 쓰신다면 allocator도 좋은 선택이구요. (list나 연관 컨테이너는 좀 더 생각해야 하구요)
훌륭한 텍스트들이 꽤 있으니 꼭 참고하세요. effective C++ 시리즈에도 있고 다른 고급서적에도 꽤 자주 다루는 주제입니다.
int fd = shm_open("/shm_test", O_RDWR, 0
int fd = shm_open("/shm_test", O_RDWR, 0);
void *p = mmap(0, sizeof(yourclass), PROT_READ|PROT_WRITE,
MAP_SHARED, fd, 0);
yourclass *instance = new(p) yourclass();
mmap()을 이용할 시에는 한가지 주의해야 할 점이 있을 듯 싶습니다.
mmap()을 이용할 시에는 한가지 주의해야 할 점이 있을 듯 싶습니다.
virtual function이 그것인데, 일반적으로 vtables의 item들은 heap area(아마도...)에 생성될것입니다.
따라서, virtual function이 있는 object의 경우, mmap()을 통한 완벽한 sharing은 힘들 듯 싶습니다..
차라리 bugiii님이 말씀하신 것처럼, allocator를 사용하시는건 어떨지...
allocator가 생겨난 이유중에 하나가 님과 같은 의도를 해결하기 위한것으로 알고 있습니다.
(내부적으로 pointer가 필요한 경우, offset으로 사용할것이라 추측됩니다.. :wink: )
아래 싸이트를 한번 참조해보세여..
http://allocator.sourceforge.net
PS. 위의 wowcode님... 혹시 제가 아는 분이 아닌가여? 8)
--------------------------
Donghyun Jung
댓글 달기