尝试将值分配给结构中的void指针

时间:2019-04-29 17:54:00

标签: c pointers struct void-pointers

我有一个这样定义的结构:

typedef struct foo {
    void *bar;
    int memory;
}

我正在尝试像这样为空指针分配一个值:

int *mem = (int *)proc->memory;
proc->bar = mem;

但是,第二行给出了分段错误。为什么?我以为我知道如何使用指针,但我不知道。

赋值后,mem指针包含proc-> memory的地址。但是,当我尝试将void * bar分配给该地址时,它显示的是segmentationfault。

我尝试了很多东西,在任何地方都引入了“&”号和指针广播,我不知道自己在做什么。

1 个答案:

答案 0 :(得分:0)

如果要使用指针,则需要获取int的地址。

int *mem = &(proc->memory);

您正在创建一个指向int值的指针-这可能指向受保护的内存,而不是进程空间内的任何内容。


如果要“进行复制”,则需要分配空间

int *mem = malloc(sizeof(int));

*mem = proc->memory;

在C语言中的指针的简单介绍中应该涵盖所有内容。

例如http://www.ontko.com/pub/rayo/cs35/pointers.html

您还可以在C中通过Google搜索malloc或动态内存分配。