节点 - >指针这是我的结构:节点 - >指针=指针VS使用的memcpy
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);
我问题是,为什么在如下结果不同:
为什么下面的代码工作完美:
node->content = memcpy(node->content, content, content_size);
当以下不:
node->content = content;
感谢。
可能是因为'memcpy'复制了所有的数据,而赋值只复制*指针*。 –
这个分配是没有必要的,'node-> content = memcpy(node-> content,content,content_size);'相当于'memcpy(node-> content,content,content_size);'。现在应该更清楚为什么'memcpy'的方式工作,'node-> content = content'不起作用。 –
顺便说一下,如果您使用例如'malloc'并且使'node-> content'指向那个内存,当你丢失原始指针时,你将有'node-> content = content'的内存泄漏。 –