请求实现C++中Queue结构体的cleanQueue清理函数
实现方案
函数实现代码
#include <stdlib.h> // 需引入stdlib.h以使用free()函数 void cleanQueue(Queue* q) { // 避免空指针解引用 if (q == NULL) { return; } // 释放数组内存并置空指针 if (q->arr != NULL) { free(q->arr); q->arr = NULL; } }
代码说明
- 空指针检查:先判断传入的
q是否为NULL,直接返回,防止访问空指针引发程序崩溃。 - 释放数组内存:检查
q->arr是否有效,调用free()释放其占用的堆内存;之后将q->arr置为NULL,避免后续误操作野指针(访问已释放的内存)。
额外注意事项
- 此实现基于当前给出的
Queue结构体(仅包含int* arr),如果后续结构体扩展了其他成员(如队列长度、头尾索引等),需要在cleanQueue中同步处理这些成员的重置。 - 如果
Queue对象本身是通过malloc在堆上分配的,调用cleanQueue后还需手动释放队列对象:free(q);。
内容的提问来源于stack exchange,提问作者SkyBear
相关产品推荐
相关产品推荐

