c - 试图为结构中的 void 指针赋值
问题描述
我有一个这样定义的结构:
typedef struct foo {
void *bar;
int memory;
}
我正在尝试为 void-pointer 分配一个值,如下所示:
int *mem = (int *)proc->memory;
proc->bar = mem;
但是,第二行给出了分段错误。为什么?我以为我知道如何使用指针,但我不知道。
赋值后,mem 指针包含 proc->memory 的地址。但是当我尝试将 void *bar 分配给该地址时,它会显示分段错误。
我尝试了很多东西,在任何地方引入 & 和指针转换,我不知道我在做什么。
解决方案
如果你想要一个指针,你需要获取 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 中搜索 malloc 或动态内存分配。
推荐阅读
- javascript - 如何从类中的方法调用函数
- http - ISP 如何读取 HTTPS 标头
- ethereum - 如何在 ERC721 代币中添加自定义属性(链上)?
- debugging - vscode调试使用gdb,带有'-x'可选的miDebuggerArgs不支持文件中的相对路径
- sql - 如何获取部分匹配 SQL 中其他列的返回值?
- sql - Oracle - 无法更改程序
- eleventy - Eleventy - 定义摘录的起点和终点
- javascript - 有没有办法将锚标记添加到 insertCell 函数?
- docusignapi - 签名提供者对此收件人无效
- javascript - javascript通过逗号分隔符解析JSON数据