我有一个这样定义的结构:
typedef struct foo {
void *bar;
int memory;
}
我正在尝试像这样为空指针分配一个值:
int *mem = (int *)proc->memory;
proc->bar = mem;
但是,第二行给出了分段错误。为什么?我以为我知道如何使用指针,但我不知道。
赋值后,mem指针包含proc-> memory的地址。但是,当我尝试将void * bar分配给该地址时,它显示的是segmentationfault。
我尝试了很多东西,在任何地方都引入了“&”号和指针广播,我不知道自己在做什么。
答案 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或动态内存分配。