J'ai rencontré un comportement étrange dans le compilateur Visual Studio 2010 C++. code suivant compile, mais lance "l'affirmation de débogage a échoué" après l'exécution avec message:Erreur d'exécution Visual Studio 2010 C++
"_BLOCK_TYPE_IS_VALID (pHead-> nBlockUse)"
Compile et le bon déroulement du CCAG. Est-ce ma faute?
#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;
}
Cette erreur est générée par l'exécution de débogage VS; Si vous l'aviez compilé, vous n'obtiendriez pas l'erreur, mais vous risqueriez un crash. Si par GCC vous vouliez dire GCC sous Linux, vous pouvez voir la même erreur en exécutant votre code sous valgrind. – Rup