title: shared C++ object through memory
body: <p>I have a quick question for those familiar with inter-process communication.</p>
  
  <p><strong>Situation</strong></p>
  
  <ul>
  <li>I have a program (program A) which I can add some code to, but very limited.  This is the main program that generate a lot of data.</li>
  <li>The way the data is formulated is limited, so I would like to create a second program (program B) and hence need to get data from A to B.  And even sometimes cause A to run some functions with no return value.</li>
  <li>I am aware of Named pipes, however I feel they might be bulky? - not sure though - I have for instance the following concerns (may be unfounded):
  <ol>
  <li>data flow => convert to binary -> place data in memory -> server Read -> convert to string -> through probably a switch statement determine what is requested -> get what is requested -> convert to binary -> place in memory -> read by client and convert to string / some acceptable format.</li>
  <li>It has to use basically switch statements on both sides and if you want a different format of info other than string, you will need to take this into consideration</li>
  <li>one message might have to wait for another to complete, so it might be slower during a lot of calls to it at the same time? - not sure though</li>
  </ol></li>
  <li>Other inter process communication methods probably has the same problem.</li>
  <li><p>Better solution I think would be to create an "object" - class.  And share the object memory address between programs, thereby theoretically "merging" the A and B then:</p>
  
  <ol>
  <li>There is no problem with encode and decode issues etc</li>
  <li>Data is simply requested / invoked through calling a function.</li>
  <li>The function return the proper type and no need to establish what the correct type is (i.e. bool / int / string / double etc)</li>
  </ol>
  
  <p>I understand that this also has several problems, i.e. if object gets removed from memory location by main / another program accessing it.</p></li>
  </ul>
  
  <p><strong>Question</strong> </p>
  
  <ul>
  <li>What is the best way to solve this problems:</li>
  <li>Is there an invoke option in C++ that will allow me to write and read from a memory address?  at the moment:
  <ol>
  <li>I can access same object between A and B, but I can't write / read as that will throw an exception.  So basically can I through simple invoke perhaps read / write to this object?</li>
  <li>I am aware of WriteProcessMemory function - but this is not what I want - i.e. I don't necessarily want to change memory values, merely access data / invoke actions from B that A will perform.</li>
  </ol></li>
  <li>Is there a simple and easy way of doing this?  I am aware of something called boost, but don't know anything about it - is this my best option? -> i.e. should I investigate this as my best solution?</li>
  </ul>
  
  <p>Thank you in advance for any advise on this issue.</p>