【发布时间】:2010-11-08 19:40:15
【问题描述】:
我在VC express 2008下使用Loki::Singleton、Loki::SmartPtr和std::vector时遇到了问题. 以下是我的来源。
#include <iostream>
#include <vector>
#include <loki/Singleton.h>
#include <loki/SmartPtr.h>
class Foo {
public:
std::vector<Loki::SmartPtr<Foo>> children ;
void add() {
Loki::SmartPtr<Foo> f = new Foo ;
children.push_back(f) ;
}
Foo () {
}
~Foo () {
}
} ;
typedef Loki::SingletonHolder<Foo> SingletonFoo ;
int main ()
{
std::cout << "Start" << std::endl ;
SingletonFoo::Instance().add() ;
std::cout << "End" << std::endl ;
}
编译链接没有问题,但是程序执行完后,弹出错误:
Windows has triggered a breakpoint in test.exe.
This may be due to a corruption of the heap, which indicates a bug in test.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while test.exe has focus.
The output window may have more diagnostic information.
似乎有些记忆被删除了两次,我不太确定。这是 VC 的错误还是我错过了使用 Loki?
提前致谢。
【问题讨论】: