首页 > 解决方案 > 共享内存c中结构中的动态二维数组

问题描述

我想在我将传递给共享内存的结构中创建一个二维数组。

我用过malloc,但它不起作用。

我在 Linux 上使用 c 语言,我的代码如下所示:


#include <stdio.h>

struct my_data
{
    char **txt;
    int counter;
}*shared_data;

key_t shmkey;
int shmid;

int main(int argc, char *argv[])
{
    
    struct shmid_ds buf;
    
    shared_data = (struct my_data*)malloc(sizeof(struct my_data));
    
    shared_data -> txt = (char**)malloc(sizeof(char) * atoi(argv[2]));
    
    for(int i=0; i<atoi(argv[2]); i++)
    {
        shared_data->txt[i] = (char*)malloc(atoi(argv[3]) * sizeof(char));
    }
    
    if(shmkey = ftok(argv[1], 1) == -1) exit(1);
    
    shmctl(shmid, IPC_STAT, &buf);
    
    shared_data = (struct my_data *)shmat(shmid,(void*)0, 0); 
    
    if(shared_data == (struct my_data *)-1) exit(1);

    
    return 0;
}



标签: clinuxstructureshared

解决方案


推荐阅读