Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Alter Hase
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
// MemoryLeakSimulator // (c) Johannes Roth 2006 // Dieses kleine Programm verursacht ein MemoryLeak! // Initialisierung #include <iostream> using namespace std; // Prototypen void MemoryLeak(int *pMemory, int i); void AntiMemoryLeak(int *pMemory, int j); int main () // Mainfunktion { //Deklarationen int i = 0; int *pMemory = NULL; // MemoryLeakZeiger cout << "MemoryLeak startet!" << endl; for (i = 0; i < 100; i++) // i gibt die Anzahl der MemoryLeaks (je 4mByte) an { MemoryLeak(pMemory, i); // Funktion für MemoryLeak i-mal aufrufen } return 0; } void MemoryLeak(int *pMemory, int i) { // Deklaration lokaler Variablen int j = 0; // MemoryLeak verursachen cout << "\n\nEs wird Speicher reserviert!" << endl << "Vorgang Nr: " << i + 1 << "!" << "\n"; for (j = 0; j < 1000001; j++) { pMemory = new int; // MemoryLeak durch Speicherreservierung ohne nachträglichem Deletevorgang! // Hier werden 1000000 Integer Bereiche reserviert, also 1000*4Byte = 4kByte*1000 = 4mByte if (j == 1000000) { // Ausgabe beim letzten Schritt das 4mByte reserviert wurden! cout << "Speicher von 4 mByte an Adresse " << pMemory << " reserviert!\a" << "\n\n"; } /* Folgenden Code auskommentieren um MemoryLeak zu fixxen: AntiMemoryLeak(pMemory, j);*/ } // MemoryLeak verursacht } void AntiMemoryLeak(int *pMemory, int j) { // Start der Funktion delete pMemory; // Gibt den Speicher sofort wieder frei if (j == 1000000) { // Ausgabe beim letzten Schritt das 4mByte wieder freigegeben wurden! cout << "Der reservierte Speicher wurde wieder freigegeben!" << endl << "Beweis: Gleiche Adressen im Speicher angesprochen!" << endl; } } |
Zitat
Werbung im Allgemeinen dient der gezielten und bewussten Beeinflussung des Menschen. Der Werbende spricht Bedürfnisse teils durch emotionale, teils informierende Werbebotschaften zum Zweck der Handlungsmotivation an. Werbung appelliert, vergleicht, macht betroffen oder neugierig. - Wikipedia
Zitat von »"Nox"«
Eigentlicht dürfte es sowas garnicht geben, daher finde ich wie gesagt die Aussage ein wenig konfus.
Zitat
The problem with static members is that they don't get cleaned up until shutdown of the runtime library. This is probably happening after your leak detector tries to report what it thinks has been leaked. Most leak detectors have the same kind of problem with static data.
So, unless anyone else can see something I can't, ignore it. It's a limitation of your tool.
Werbeanzeige