C内存共享问题

标签 c memory struct

我正在编写一个共享内存程序,它一方面会创建一 block 内存并向其写入一个结构,然后从另一个程序中读取该结构。我的问题是我似乎无法将一个简单的变量复制到结构中而不会出现段错误,更不用说将结构复制到共享内存中了。任何人都可以帮助我一点。谢谢

#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/shm.h>
#include <unistd.h>


struct companyInfo
{
    double sharePrice;
    char companyName[100];
}; 

int main()
{
    key_t key = 1234;
    int shmid;
    char* smPtr = NULL;
    int i = 1;
    struct companyInfo * pdata;
    size_t sizeOfCompanyInfo = sizeof(pdata);

    printf("Size: %d\n", sizeOfCompanyInfo);

    size_t sizeMem = sizeOfCompanyInfo*5;

    shmid = shmget(key, sizeMem, 0644 | IPC_CREAT);

    smPtr = (char*) shmat(shmid, (void*) 0, 0);

    char bank[100] = "AIB";

    strcpy(pdata->companyName, bank);


}

最佳答案

你的意思是

size_t sizeOfCompanyInfo = sizeof(*pdata);

这是pdata指向的大小

关于C内存共享问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9638680/

相关文章:

c - setuid 和 seteuid 函数的区别

java - 如何在 HP-UX 上设置 Java 程序内存限制(-Xmx 不起作用!)?

c - 将 c 结构指针传递给 x86-32 程序集将自动取消引用

c++ - 在 C++ 中更有效地分配 struct 的内存

python - 计算 numpy memmap Infinity 输出的均值和方差

从头文件调用 Struct 到 main 函数

c - 向后读取文本文件并放入 C 中

c - Delphi PerlRegEx : Link . 静态 obj 文件,因此它们不依赖于 msvcrt.dll

c - 如何分配内存并取消引用结构中的数组数组?

c - 访问结构成员时 valgrind 出现无效读/写错误