我完全知道,如果我想创建一个指向数组的智能指针,最好的方法是使用
boost::shared_array<T>( new T[20] );
我不明白的是当这种类型的共享指针超出范围时我遇到的崩溃。
boost::shared_ptr<T>( new T[20] );
我一直认为上面的代码会造成泄漏,因为它在数组的第一个元素上调用 delete 并保持其他元素不变,但事实并非如此,我有一个分段错误。
你能帮我理解为什么吗?如果我不使用共享指针而是使用普通的香草指针,我的行为最糟糕
CMyClass *p = new CMyCLass[10];
///....do stuff
delete p;
*** glibc detected *** ./test: munmap_chunk(): invalid pointer: 0x088eb00c ***