Absturz beim Löschen eines dynamischen Arrays

UncleBob

Mitglied
Mein Programm stürtzt ab wenn ich versuche ein dynamisches Array zu löschen. Das Array ist von einer selbstdefinierten struct, die folgendermassen aussieht:

Code:
struct ES_Star
{
	std::string Name;
	float Magnitude;
	std::string Spectrum;
	int Fraction;
	std::string Sequence;
	double x;
	double y;
	double z;
	long CubeX;
	long CubeY;
	long CubeZ;
	bool LabelDir;
	core::vector3df Position;
	scene::ISceneNode *node;
	scene::ISceneNode *stalk;
	scene::ISceneNode *label;
};

Das Array ist wiederum member einer Klasse:

Code:
class ES_Cluster
{
public:
	ES_Cluster(void);
	~ES_Cluster(void);
	void ClearCluster(void);
	void ConvertHyg(void);
	void LoadCat(std::string CatName);
	void InitCluster(void);
	void CreateCube(ES_Cluster &Cube, long X, long Y, long Z);
	void AddStarsToScene(scene::ISceneManager *smgr, int CubeOffsetX, int CubeOffsetY, int CubeOffsetZ);
	void AddStalksToScene(scene::ISceneManager *smgr);
	void AddLabelsToScene(scene::ISceneManager *smgr, gui::IGUIEnvironment *mGUI);
	void RemoveStarsFromScene(void);
	void RemoveStalksFromScene(void);
	void RemoveLabelsFromScene(void);
	bool GetStalks(void);
	bool GetLabels(void);
	bool GetStars(void);
	void ToggleStars(scene::ISceneManager *smgr,  int CubeOffsetX, int CubeOffsetY, int CubeOffsetZ);
	void ToggleStalks(scene::ISceneManager *smgr);
	void ToggleLabels(scene::ISceneManager *smgr, gui::IGUIEnvironment *mGUI);
	void SwitchCubes(scene::ISceneManager *smgr, gui::IGUIEnvironment *mGUI, 
					 CubePtr &mCubes, core::vector3df &CurCube, int mDir);   
	ES_Star IdentifyNode(CubePtr mCubes, long NodeID);
	long nStars;
	ES_Star *Stars;            //<------------------

private:
	bool mLabels;
	bool mStalks;
	bool mStars;
	void CreateSwitchCubes(CubePtr mCubes[], core::vector3df CurCube, int mDir);
};

Es wird in dieser Klasse initialisiert mit

Code:
Stars = new ES_Star[x]

Das funktioniert auch alles prächtig, ich kann damit so ziemlich alles machen. Das Problem kommt wenn ich das Array wieder löschen will, mit folgender Zeile:

Code:
delete	mCubes[i]->mCube->Stars;

wobei mCubes[i] ein Pointer zu einem Objekt ist das das Objekt mCube vom Typ ES_Cluster enthält, und bei dem das Array Stars[] neu initialisiert werden soll. Dazu würde ich es gerne erst löschen, aber Windows triggert dann einen breakpoint in xstring, offensichtlich beim Versuch die Strings zu löschen die in jedem ES_Star objekt vorhanden sind:

Code:
	__CLR_OR_THIS_CALL ~basic_string()
		{	// destroy the string
		_Tidy(true);
		}

Was sollte ich also tun um das Array korrekt zu löschen?
 
Zurück