Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Folgendes Problem:

es werden an eine Funktion Parameter übergeben:


cPicture *temppic = new cPicture;

temppic->SetSize(11, 11);

die Funktion hat den Sinn, den Speicherbereich zu vergrößern:

class cPicture

{

	void* pic;

	void SetSize(int newxsize, int newysize);

};


void cPicture::SetSize(int newxsize, int newysize)

{

	if(pic != NULL)

		pic = (SDL_Color*)realloc(pic, sizeof(SDL_Color)*(newxsize*newysize));

	else

		pic = (SDL_Color*)malloc(sizeof(SDL_Color)*(newxsize*newysize));

	if(pic == NULL)

	{

		cout << "couldn't malloc mem (" << newxsize << "x" << newysize << ")->" << newxsize*newysize << endl;

		return;

	}

}
ich bekomme als Ausgabe: "couldn't malloc mem (44x15)->660" bei anderen Zahlen funktioniert alles: zb.

cPicture *temppic = new cPicture;

temppic->SetSize(10, 11);

Geschrieben

Wenn es mit größeren Zahlen als (44,15) auch klappt, hast du dir vermutlich irgendwo vorher bereits den Heap zerschossen, möglicherweise durch eine Überschreitung der Grenzen eines Arrays.

Warum hantierst du eigentlich überhaupt mit malloc, wenn du C++ benutzt?

Geschrieben

Du meinst als alternative einfach array erstellen?

Der fehler trat eben mit diesen zahlen auf, ich hab dann noch probiert, obs mit konstanten geht, und mt denen giengs eben auch nicht

Geschrieben
Du meinst als alternative einfach array erstellen?
Nein, ich meine std::vector. Der nimmt dir die gesamte Speicherverwaltung ab.

Bau einfach überall in deinem Programm, wo du einen Arrayzugriff hast, eine Prüfung ein, ob der Index gültig ist, dann sollte sich das Problem schnell erledigt haben.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...