節點 - >指針這是我的結構:節點 - >指針=指針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'的內存泄漏。 –