【发布时间】:2020-03-17 16:26:53
【问题描述】:
我正在编写一个小学校程序,我必须使用 'void const *content' 作为参数。 我无法打印新节点的内容。没有'const',代码可以正常工作并显示一切正确。有人能指出我做错了什么吗?
终端输出: Ø 6
#include <stdio.h>
#include <stdlib.h>
typedef struct s_list
{
void *content;
size_t content_size;
struct s_list *next;
} t_list;
t_list *lstnew(void const *content, size_t content_size)
{
struct s_list *new = (struct s_list*)malloc(sizeof(struct s_list*));
if(new == NULL){
printf("No allocation!");
exit(1);
}
new->content = &content;
new->content_size = content_size;
new->next = NULL;
return(new);
}
int main(void)
{
printf("%s\n", lstnew("Hello", 6)->content);
printf("%zu\n", lstnew("Hello", 6)->content_size);
return(0);
}
【问题讨论】:
-
第一次观察:
malloc(sizeof(struct s_list*))没有分配足够的内存 - 只够一个指针。然后new->content = &content;使用的是传递参数的位置,而不是参数本身。
标签: c linked-list printf undefined-behavior singly-linked-list