我遇到了Visual Studio 2010 C++编译器中的奇怪行为。 下面的代码编译但抛出 “调试断言失败” 执行后,用 消息:Visual Studio 2010 C++运行时错误
“_BLOCK_TYPE_IS_VALID(pHead-> nBlockUse)”
编译和下GCC顺利进行。这是我的错吗?
#include <iostream>
#include <vector>
using namespace std;
typedef unsigned int uint;
class Foo {
vector<int*> coll;
public:
void add(int* item) {
coll.push_back(item);
}
~Foo() {
for (uint i = 0; i < coll.size(); ++i) {
delete coll[i];
coll[i] = NULL;
}
}
};
int main()
{
Foo foo;
foo.add(new int(4));
Foo bar = foo;
return 0;
}
该错误是由VS调试运行时抛出;如果你编译它的版本,那么你不会得到这个错误,但是你会冒险崩溃。如果通过GCC,你的意思是Linux上的GCC,那么你可以通过在valgrind下运行你的代码来看到同样的错误。 – Rup 2011-05-06 15:57:25