Ticket #3682: main.cpp

File main.cpp, 1022 bytes (added by anonymous, 13 years ago)

program_that_cause_segmentation_fault

Line 
1#include <iostream>
2#include <boost/interprocess/managed_shared_memory.hpp>
3
4#define SHARE_NAME "test_22"
5#define SHARE_SIZE 4096
6
7namespace bi=boost::interprocess;
8
9typedef bi::allocator<char, bi::managed_shared_memory::segment_manager> shm_char_allocator;
10
11#define PR(code) std::cout << code << std::endl;
12
13struct shm_remover{
14 std::string m_share_name;
15 shm_remover(const char *share_name) : m_share_name(share_name) {bi::shared_memory_object::remove(m_share_name.c_str());};
16 ~shm_remover() {bi::shared_memory_object::remove(m_share_name.c_str());};
17};
18
19struct B{
20 virtual ~B() { PR("B"); };
21};
22
23struct M : B{
24 shm_char_allocator m_a;
25 M(const shm_char_allocator &p_a) : m_a(p_a) {};
26 ~M() { PR("M"); };
27};
28
29
30int main(int argc, char *argv[])
31{
32 shm_remover r(SHARE_NAME);
33
34 bi::managed_shared_memory msm = bi::managed_shared_memory(bi::create_only, SHARE_NAME, SHARE_SIZE);
35 shm_char_allocator sa(msm.get_segment_manager());
36
37 B *m = msm.construct<M>(bi::anonymous_instance)(sa);
38 msm.destroy_ptr(m);
39
40 return 0;
41}