node* curr = top;
do {
free(curr); //free saved pointer
curr = curr->next; //advance head to next element
} while (curr!=top);
当释放如上所述的循环链表的内存时,如何将每个指针设置为空?
答案 0 :(得分:3)
由于您无论如何都要释放节点,因此无需重置节点中包含的指针。
根据您出现的代码的上下文,可能需要在结尾处设置top = NULL
。可以说,无论如何,这是一个很好的做法。
在某种程度上相关的说明中,您的代码中存在错误:curr = curr->next
取消引用已解除分配的指针并生成undefined behaviour。解决这个问题的一种方法是:
node* curr = top;
node* next;
do {
next = curr->next;
free(curr);
curr = next;
} while (curr!=top);
另请注意,您的代码无法正确处理释放空列表。修复这个问题留给读者练习。
答案 1 :(得分:0)
要使指针 null 指针将常量零转换为与指针数据类型相同的数据类型:
var express = require('express');
var router = express.Router();
var youtubeStream = require('youtube-audio-stream');
router.get('/stream/:videoId', function (req, res) {
try {
youtubeStream(req.params.videoId).pipe(res);
} catch (exception) {
res.status(500).send(exception)
}
});