title: Shared memory and memcpy issue
body: <p>I'm learning to program with shared memory in C (linux). I need to share some struct among several process that will be created with fork(). Unfortunately, when i'm trying to initialize the newly shared address space i get a slient error (no output in console) at the memcpy call.</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;limits.h&gt;
  #include &lt;sys/stat.h&gt;
  #include &lt;sys/mman.h&gt;
  #include &lt;string.h&gt;
  #include &lt;fcntl.h&gt;
  #include &lt;errno.h&gt;
  
  #define ROWS 10000
  #define COLS 15000
  
  struct mm_shared {
      int test;
      unsigned char matrix[ROWS][COLS];
  };
  
  int main(void) {
  
      int fd;
      if ((fd = shm_open("/mm", O_CREAT | O_RDWR, 0777)) == -1) {
          printf(stderr, "shm_open failed! %d - %s\n", errno, strerror(errno));
      }
  
      if (ftruncate(fd, sizeof(struct mm_shared) == -1)) {
          printf(stderr, "ftruncate failed! %d - %s\n", errno, strerror(errno));
      }
  
      struct mm_shared * shared;
      if ((shared = mmap(NULL, sizeof(struct mm_shared), PROT_READ
              | PROT_WRITE, MAP_SHARED, fd, 0)) == -1) {
          printf("mmap failed! %d, %s\n", errno, strerror(errno));
      }
      struct mm_shared * init = (struct mm_shared *) malloc(sizeof(struct mm_shared));
  
      memcpy(shared, init, sizeof(struct mm_shared)); &lt;-- here lies the problem!
  
  
      shm_unlink("/mm");
      return EXIT_SUCCESS;
  }
  </code></pre>
  
  <p>When debugging the shared pointer, the debug info (eclipse debugger) shows:</p>
  
  <pre><code>Failed to execute MI command:
  -data-evaluate-expression (shared)-&gt;test
  Error message from debugger back end:
  Cannot access memory at address 0x7ffff7ffc000
  </code></pre>
  
  <p>I don't know if this may help. Also, i would like to ask if my approach of storing a big matrix inside the struct is right (it should be allocated in the heap right? because i get a pointer to the struct even when the matrix itself isn't a pointer).</p>
  
  <p>Any help with this would be greatly appreciated!</p>