|
Boost Users : |
Subject: [Boost-users] using offset_ptr
From: Rex Battenberg (Rex.Battenberg_at_[hidden])
Date: 2009-04-23 15:03:43
Hi,
I am having trouble using offset_ptr. I want to dynamically allocate
memory in windows shared memory and create a point to it so it can be
used by two different processes. I figures I would create a named
object in the shaed memory to contain the pointer to the memmory, but
when I try it I get a compile error. Here is the code I have so far.
Note the the the shared memory is created elsewhere and it is big enough.
bip::managed_windows_shared_memory* pAldisSharedMemory = new
bip::managed_windows_shared_memory(bip::open_only,
ALDIS_SHARED_MEMORY_NAME.c_str());
if (pAldisSharedMemory)
{
bip::offset_ptr<char> pImageData;
//
// This line causes the following error. Error 1 error C2440:
'initializing' : cannot convert from //'
//boost::interprocess::offset_ptr<PointedType> *' to 'char *'
//C:\stopbar\3rdParty\boost\include\boost\interprocess\offset_ptr.hpp
111 AldisHardware
//
pImageData =
pAldisSharedMemory->find_or_construct<bip::offset_ptr<char>>("ImageData")();
// char * *pImageData =
pAldisSharedMemory->find_or_construct<char *>("ImageData")();
if (pImageData == NULL)
{
//
// This value will be unuseable by other processes, need to
use an offset_ptr here, but I have not figured
// out yet how to make them work.
//
pImageData = (char *)pAldisSharedMemory->allocate(1280 * 860
* 3);
}
I have really no idea what is wrong or how to do this. If anybody has
any examples, that would be great.
Thanks
Rex
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net