小编inv*_*try的帖子

Linux共享内存段错误

我在样本C程序(RHEL 6)中获取可用的共享内存区域时遇到了困难.它应该是非常基本的,所以我不确定我做错了什么,但是当我分配内存区域时,它似乎最初是可访问的.但是,当我从初始化函数返回时,内存区域不再可访问,当我尝试访问内存区域时,我得到了段错误.

我试过通过GDB运行它,所有我看到的是我试图做这个memcpy的行上的段错误:

memcpy(ptr, &x, sizeof(x));
Run Code Online (Sandbox Code Playgroud)

这可能是我看不出的一些小问题!谢谢.

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <sys/stat.h>
#include <errno.h>


void* shared_mem[2];

int init(int *memAddress);

int main() {

  if(init((int*)&shared_mem[0]) < 0) {
    printf("Error initializing, exiting\n");
    exit(1);
  }

  int *ptr=shared_mem[0];

  int x=278;
  memcpy(ptr, &x, sizeof(x));
  printf("data written to memAddress: %d\n", shared_mem[0]);

}

// Initialize shared memory region and insert test data
int init(int *memAddress) {
    key_t key = 234324;
    int size = sizeof(int);
    static const unsigned int flags …
Run Code Online (Sandbox Code Playgroud)

c linux gdb shared-memory

0
推荐指数
1
解决办法
177
查看次数

标签 统计

c ×1

gdb ×1

linux ×1

shared-memory ×1