c - 共享内存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;
}
解决方案
推荐阅读
- r - 如何在闪亮的仪表板侧边栏中的 menuItem 或固定框下创建 checkBoxGroup 项?
- sql - Postgres - 仅选择具有 FAILURE 状态的日期
- javascript - 为什么 .toLocaleTimeString 不转换时区
- vba - 方法 .GetRows 返回 Empty - 访问 VBA
- c++ - 在其他父类实现的C++接口中使用抽象虚函数
- python - 如何从此 $68.95 中获取 int 值
- google-apps-script - 有没有办法通过应用程序脚本在谷歌表格的表格上找到现有的过滤器?
- powershell - 在 DevOps 管道中设置 Azure KeyVault 变量
- php - Symfony 5.2.11:创建自定义访问决策管理器的问题
- node.js - 谷歌聊天机器人请求消息文本