Process terminated with status -1073741819

Status
Niet open voor verdere reacties.

dvdbrander

Gebruiker
Lid geworden
13 apr 2010
Berichten
34
mijn error:
Process terminated with status -1073741819
krijg ik in deze code:
Code:
case 3:
                        {
                            char* msg;
                            msg = readstring(0);
                            std::cout << msg << std::endl;
                            clearbuffer(0);
                            writebyte(4, 0);
                            writestring(msg, 0);
                            for(int i=0; i<=255; i++)
                                if(Players[i].InUse)
                                    sendmessage(Players[i].Sock, "", 0, 0);
                        }
                        break;
nu vraag ik me af, kunnen jullie hieraan zien wat er fout is?
ik kan jullie verzekeren dat de functies readstring, sendmessage, writebyte, writestring en clearbuffer werken.
 
Gebruik VS, de debuger, zet breakpoints en kijk waar het fout gaat en waarom.
 
Als die functies inderdaad werken, en werken zoals jij denkt dat je werken; dan zou ik in de eerste plaats gokken op een out-of-bounds/null-access.
Heeft je Players array wel degelijk 255 elementen en bestaan die ook allemaal? En als die elementen bestaan, bestaat hun Sock property dan? En is dat overal wel een geldige waarde?

Een sendfunctie lijkt mij trouwens iets wat je meestal wel met enige vorm van feedback wil om te weten of het verzenden lukte of niet; zij het met een return value of dmv exceptions en try-catch.
 
ik heb lopen uitqouten, en hier gaat t fout:
Code:
case 3:
                        {
                            char* msg;
                            msg = readstring(0);
                            std::cout << msg << std::endl;//------------------------1
                            clearbuffer(0);
                            writebyte(4, 0);
                            writestring(msg, 0);//---------------------------2
                            for(int i=0; i<=255; i++)
                                if(Players[i].InUse)
                                    sendmessage(Players[i].Sock, "", 0, 0);
                        }
                        break;
normaal bij 1, quote ik die uit bij 2.
de msg-variabele is dus niet leesbaar denk ik.
de code readstring:
Code:
char* readstring(double buffid)
{
	CBuffer*buff = (CBuffer*)buffers.item((int)buffid);
	if(buff == NULL)return NULL;
	return buff->readstring();
}
 
scope probleem,en/of geen goede checks.

ipv de msg-pointer door te geven en daar een waarde/geheugen aan toe te kennen, maakt je read-functie een LOKALE buffer aan en returned het resultaat van een operatie op die lokale buffer.. een buffer die niet meer bestaat buiten je functie, waardoor de kans groot is dat de waarde van/in buff->readstring() ongeldig is.
In dit geval kan je beter in de functie een strncpy doen van het resultaat van buff->readstring in msg.

Maar een nog veel groter probleem is dat je niet checkt op NULL!
Je functie returned mogelijks NULL (een null-pointer) en die probeer je weer te geven --> faalt.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan