Zugriffsverletzung?
-
Also mein code sieht etwa so aus:
class bar { public: bar(unsigned,unsigned); //steht woanders... }; bar* generate_bar() { return new bar(4,7); }; class foo { private: vector<bar*,unsigned> vec; public: foo() { for(unsigned i=0;i<100;++i) vec.push_back(std::pair<bar*,unsigned>(generate_bar(),0)); //hier der Fehler }; };
Beim debugging sagt man mir:
Unbehandelte Ausnahme bei 0x00426ee5 in foo.exe: 0xC0000005: Zugriffsverletzung-Schreibposition 0x00000000.
/edit: Ich habe nix verändert, aber nu gibts keinen Fehler mehr. Von mir aus kann der Beitrag gelöscht werden...
-
Hi,
Mich wundert es das das ganze überhaupt kompiliert
wird.Das verstehe ich ja noch:
vec.push_back(std::pair<bar*,unsigned>(generate_bar(),0));
aber das kann nicht sein:
vector<bar*,unsigned> vec;
du meintest wohl:
vector< std::pair<bar*,unsigned > > vec;
-
Ja, du hast recht. Ich hätte wohl nicht die Nach durchmachen sollen...
-
OK, jetzt hab ich ne Zugriffsverletzung...
Unbehandelte Ausnahme bei 0x00434c68 in genetic.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0x0000010d.
Sie KÖNNTE aus dieser
while(i!=input.end()) delete i++->first; input.erase(input.begin()+size-1,input.end());
Stelle stammen. Es handelt sich um den Vektor, first wurde dynamisch allokiert...
Der debugger meint, der Fehler würde in der Zeile/* verify block type */ _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
der Datei dbgdel.cpp stammen, was mir natürlich ungemein hilft
...