|
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