Q1: 操作数变多之后,出现了栈溢出的问题。 A:因为使用了智能指针,其资源在释放时会递归进行释放,插入的节点数量过多后会导致栈溢出,可以通过提高系统的栈空间上限来解决这个问题。
Q2:在多线程环境下,出现了冲突与内存泄漏问题。 A:主要是插入和删除操作时,先申请了读锁,然后如果需要对跳表进行修改时再申请写锁,这个过程中可能出现其他线程抢占写锁修改数据的现象,导致数据不一致。解决方法是进入函数的时候就直接占用写锁。
Q3: 在编译时添加编译指令 -fsanitize=address 后,出现了内存泄漏问题? A: 就离谱,不知道为啥。