c - 如何使用共享内存在 C Linux 中定义二维字符数组并用字符填充

标签 c linux ubuntu

我在 Ubuntu 上使用 Eclipse C/C++ IDE,并尝试将 char 的二维定义为父子进程之间的共享内存,我正在使用它:

void fill(char **p)
{
    printf ("int i=0;\n");
    int i=0;
    printf ("int j=0;\n");
    int j=0;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            p[i][j]=' ';
        }
    }
}


int shmid;
char **shmPtr;
if(shmid = shmget(2000, sizeof(char[3][3]), 0)!=-1)
{
    shmPtr = shmat(shmid, 0, 0); //attach shared memory to pointer
    fill(shmPtr);
}

这是定义数组的正确方法吗?在尝试填充此数组时,我遇到了

段错误

最佳答案

正是我所怀疑的。 Two-dimensional arrays ain't double pointers.

void fill(char p[3][3])
{
    int i, j;
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            p[i][j] = ' ';
        }
    }
}

int shmid = shmget(2000, sizeof(char[3][3]), 0);
char (*shmPtr)[3] = shmat(shmid, 0, 0);
fill(shmPtr);

关于c - 如何使用共享内存在 C Linux 中定义二维字符数组并用字符填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14940670/

相关文章:

python - `pip install pyqt5` 和 `sudo apt-get install python3-pyqt5` 有什么区别? [这里 pyQt5 本身更像是一个占位符]

c - 如何分配要存储到数组中的用户输入

c - RECV 动态内存分配

linux - Winsock2 listen() 是如何阻塞的?

linux - 我如何获得 Ubuntu 源代码?

linux - 配置多节点 hadoop 安装

java - 在 Ubuntu 14.04 的 chrome 中安装 java 插件

node.js - 安装 Node 模块时 node-gyp 重建错误

c - 双链表随机快速排序

c - 替换数组中的字符