【发布时间】:2015-01-09 04:49:08
【问题描述】:
假设您有一个节点struct,其属性为void* data。
是否可以将此指针的值设置为任意整数值(即,而不是像node->data = &random_integer 这样的操作)。
我尝试以下几行:
NodePtr node = malloc(sizeof(Node));
*((int*)(node->data)) = 0;
编译时没有错误和警告,但会导致段错误。我不太清楚为什么。
我可以轻松地将 void 指针设置为某个 &int,但随后我必须为 &int 分配空间……对于如此简单的操作来说,这似乎是不必要的。
【问题讨论】:
-
你确定
node->data已经初始化了吗? -
@BlagovestBuyukliev 我确定不是。
-
您忘记将内存分配给
node->data。即:node->data = malloc(sizeof(int)); -
@BlagovestBuyukliev 这是操作节点->数据的第一行代码,但这不是初始化值吗?另外关于分配注释,不是 node->data 已经在 malloc() 声明中分配了吗?即,node->data 指向分配的内存。
-
malloc只是为您的Node结构分配足够的空间。初始化结构中包含的任何指针不是malloc的工作。
标签: c segmentation-fault void-pointers