Boost logo

Boost Users :

Subject: [Boost-users] Using boost interprocess features from inside Class member functions
From: Achuth Sankar (achuthman_at_[hidden])
Date: 2012-05-04 17:47:16


Hi All

     Am facing a lot of issue while using interprocess features inside my
class file. I am pasting my class file below:

 class MyClass{

Ref* ref;

public:
    MyClass();
    void initializeBuffers();
    void processMessage();
    ~MyClass();
};

void MyClass::createBuffer() {
    shared_memory_object::remove("test");
    shared_memory_object shm(open_or_create, infoBufferName, read_write);
    shm.truncate(sizeof(ServerDetails));
    mapped_region region(shm, read_write);
    void* addr = region.get_address();
    ref=new (addr) Ref;
    ref->value=50;
}

void MyClass::processMessage() {
    printf("%d",ref->value); //I get a segmentation fault in here.
}

int main()
{
    MyClass c();
    c.createBuffer();
    c.processMessage();
}

When I execute this I am getting segmentation exception.
If I merge processMessage and createBuffer under same function it starts
working. But if in any case I change the function signature to have an
argument again this issue starts.
Am not sure if I am doing some thing wrong above. Please do help me on
this.

Error I get is:
Program received signal SIGSEGV, Segmentation fault.
0x77d41df8 in ntdll!RtlGetCompressionWorkSpaceSize ()
   from C:\Windows\system32\ntdll.dll

--
Achu


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