Programmabsturz bei Rücksprung aus Funktion
- 
					
					
					
					
 Hallo! 
 Ich habe einen sehr komischen Fehler in meinem Programm und bekomme den einfach nicht raus.
 Ich habe eine Funktion, der ein string-objekt als Referenz übergeben wird. In der Funktion werden ein paar Abfragen gemacht (laufen alle normal ab, wie sie es sollen) und der String wird während dessen immer länger (nicht extrem lang, am ende sind es nicht mehr als 1000 Zeichen). Das komische ist aber, dass das Programm abstürzt, wenn die Funktion verlassen wird und zur aufrufenden Funktion zurückkehrt. Ich konnte die Quelle des Absturzes in die stl verfolgen, zu dieser Funktion:/** * @if maint * Destroy the object pointed to by a pointer type. * @endif */ template<typename _Tp> inline void _Destroy(_Tp* __pointer) { __pointer->~_Tp(); }Bei dem Punkt stürzt das Programm mit einer Zugriffsverletzung ab. Ich hoffe, mir kann jemand helfen. MfG 
 FloFri
 
- 
					
					
					
					
 Hallo, ich gehe davon aus, dass der Pointer schon gar nicht mehr gueltig ist, wenn du an diese 
 Stelle kommst, von daher bringt uns der Codeausschnitt nichts. Zeig doch mal den Code
 deiner Funktion.mfg 
 v R
 
- 
					
					
					
					
 FloFri! du hast einen Programmierfehler gemacht. 
 
- 
					
					
					
					
 Das hier ist die Funktion: void Serverfuncs::parseSelect(Package parseData, string &buffer) { string table = ""; string condition = ""; int colcount = 0; int curcol = 0; int maxRows = 0; Package tempPack; vector<string> fields; vector<string> selectResult; buffer = ""; if (db->isInTransaction()) { db->transactionEnd(conid); db->setInTransaction(false); } table = parseData.getString(0, '\1', true); tempPack = parseData.getString(0, '\2', true); condition = parseData.getString(0, '\1', true); maxRows = parseData.getLong(); while (!tempPack.EOP()) { fields.push_back(tempPack.getString(0, '\1', true)); } colcount = db->select(conid, selectResult, table, fields, condition, maxRows); if ((colcount <= 0) || (selectResult.size() <= 0)) return; curcol = 0; for (unsigned int i=0; i<selectResult.size(); i++) { curcol++; buffer = buffer + selectResult[i] + '\1'; if (curcol == colcount) { buffer += '\2'; curcol = 0; } } } // <------------Ich glaube aber nicht, dass ihr viel daraus ablesen könnt  
 Der Pfeil zeigt übrigends quasi die Stelle, ab dem das Programm abstürzt. Also genau dann, wenn es zurück zur aufrufenden Funktion will.
 
- 
					
					
					
					
 Nabend, sowas hab ich auch schonmal gehabt. Schau doch mal, ob der 'this'-Pointer kurz vor 
 Ende der Funktion noch gueltig ist.mfg 
 v R