首先使用 clear() 释放vector内存有是问题的, clear() 只是将vector的size置零,可是并不保证capacity为零,因此 clear() 并不能释放vector已经申请的内存。常用方式通过 swap() 函数,使得vector离开其自身的作用域,从而强制释放vector所占的内存空间 clear() 实际所做的是为vector中所保存的所有对象...
这是程序崩溃的根本原因,单例模式导致对象在内存中只占一份,虽然shared_ptr是专门管理多指针指向同一内存,但是用在类成员单例指针上时,每有一个对象构造就把这个单例指针交给一个shared_ptr管理,这就是多龙治水现象,释放时会出现重复释放,这也是之前为什么vector.clear()程序崩溃原因....