diff --git a/S-Expressions.md b/S-Expressions.md index 01e9d2f..5b7b16b 100644 --- a/S-Expressions.md +++ b/S-Expressions.md @@ -120,6 +120,8 @@ typedef struct lval { 我们可以重写 `lval` 的构造函数,使其返回 `lval` 的指针,而不是其本身。这样做会使得对 `lval` 变量进行跟踪更加简单。为此,我们需要用到 `malloc` 库函数以及 `sizeof` 操作符为 `lval` 结构体在堆上申请足够大的内存区域,然后使用 `->` 操作符填充结构体中的相关字段。 +当我们构造一个 `lval` 时,它的某些指针字段可能会包含其他的在堆上申请的内存,所以我们应该小心行事。当某个 `lval` 完成使命之后,我们不仅需要删除它本身所指向的堆内存,还要删除它的字段所指向的堆内存。 + ``` /* Construct a pointer to a new Number lval */ lval* lval_num(long x) {