Archief - C++ : Linked list probleem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Da Turtle

Legacy Member
Kheb dus een probleem met een linked list, zoals de tital al zegt :). Ik krijg een access violation als ik mijn programma run. Dit ligt bijna zeker aan deze linked list die ik gebruik, want vorige errors kwamen daar uit bij debug.
Ik heb deze linked list structure :
Code:
struct texture
	{
		LPSTR		file;		// Filename
		D3DXVECTOR2	pos;		// Position
		RECT		dest;		// Destination rectangle (in file)
		D3DXVECTOR2	scale;		// Scale 1 = standard
		WORD		alpha;		// alpha 0-255
		float		rotAngle;	// Rotation Angle
		D3DXVECTOR2	rotPoint;	// Rotation Point (in file)
		texture		*next;		// Pointer link to next texture structure
	} *texList;
Ik heb een functie die een texture toevoegd vooraan de lijst, dit gaat zo :
Code:
// Initialization
	texture *temp = new texture;
	temp->next = texList;

// Adding Texture info
... niks speciaals

        texList = temp;
	[COLOR=red]delete temp;// =weg[/COLOR]
En dan heb ik degene die de fout maakt, de functie die alle textures overloopt en deze op het scherm zet :
Code:
texture *Current = texList;
// DrawLoop
	while(Current != NULL)
	{
                // Hier Wordt texture gecreëerd, op de backbuffer gezet, ...

		Current = Current->next;

	}

// Hier komt backbuffer flippen, ... hier geraakt hij niet door access violation.
Ik denk dat het zo zit dat bij de laatste texture de link naar de volgende texture niet NULL is zoals het moet zijn.

Homer

Legacy Member
afaik (mijn C++ is nogal roestig)

ge delete uwe temp var na het inserten
wilt zeggen dat uwe pointer er wel nog naar vewijst, maar dat de ruimte om uwe struct in op te slagen verwijderd is (en gebruikt wordt door iets anders)

hf debugging :)

Da Turtle

Legacy Member
Homer zei:
afaik (mijn C++ is nogal roestig)

ge delete uwe temp var na het inserten
wilt zeggen dat uwe pointer er wel nog naar vewijst, maar dat de ruimte om uwe struct in op te slagen verwijderd is (en gebruikt wordt door iets anders)

hf debugging :)
hmm feit :D, even kijken
/*EDIT*/
Was idd een probleem. Nu komt het "fout opsporen" Hier (zie de gele pijl :p). Access violation, dus het probleem list bij de loop die alles afloopt. (van deze keer)

thx voor de reply trouwens ;), die fout had ik nie gezien

/* EDIT2 */
(ik voeg manueel 3 tiles toe aan de lijst) Als ik bij de loop die mijn volledige lijst afloopt, maar 3 keer laat loopen dan is et in orde, dus het probleem zit bij de loop while(Current != NULL)

killgore

Legacy Member
declareer je je laatste pointer wel expliciet als NULL ?

bv. als je je laatste texture maakt:

texture * LastTexture = new texture;
LastTexture->next = NULL;
anders heb je prob denk ik ;) (welja, ben ik zeker :p)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan