【发布时间】:2019-10-20 14:40:29
【问题描述】:
以下代码完美编译运行:
typedef struct n {
char value;
struct n* next;
} node;
void insert_new_node(node** head, char new_value)
{
node* new_node = malloc(sizeof(node*));
new_node->value = new_value;
new_node->next = NULL;
if(*head == NULL)
{
*head = new_node;
}
else
{
node* current = *head;
while(current->next != NULL)
{
current = current->next;
}
current->next = new_node;
}
}
我的问题是 - 请注意,我实际上只为指向结构的 指针 分配空间......而不是结构本身(参考:node* new_node = malloc(sizeof(node*));)。所以我的问题是,这个结构数据实际存储在哪里,如果它存储在堆上,它是如何工作的?
【问题讨论】:
-
“这是如何工作的?”运气好。
-
@MatteoItalia 或者说,运气不好!!
-
它不起作用。它破坏内存,导致undefined behavior。
标签: c pointers memory malloc dynamic-memory-allocation