Skip to content
Snippets Groups Projects
Commit eec84525 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Beispiele 9.6.2022

parent 2b6d6f80
No related branches found
No related tags found
No related merge requests found
#include <stdio.h>
int main ()
{
int *a = new int (42);
int *b = a;
printf ("b = %d\n", *b);
return 0;
}
#include <stdio.h>
int main ()
{
int *a = new int (42);
int *b = a;
delete a;
printf ("b = %d\n", *b);
return 0;
}
#include <stdio.h>
int main ()
{
int *a = new int (42);
int *b = a;
delete a;
printf ("b = %d\n", *b);
delete b;
return 0;
}
#include <stdio.h>
#include <memory>
int main ()
{
std::shared_ptr <int> a (new int (42));
std::shared_ptr <int> b = a;
printf ("%d\n", *b);
return 0;
}
#include <stdio.h>
#include <memory>
int main ()
{
std::shared_ptr <int> b;
{
std::shared_ptr <int> a (new int (42));
b = a;
// Ohne die Zuweisung an b würde hier der für die Integer allozierte Speicher
// automatisch freigegeben, sobald der Zeiger a verschwindet.
}
printf ("%d\n", *b);
return 0;
}
#include <stdio.h>
#include <memory>
int main ()
{
int *b;
{
int *a = new int (42);
b = a;
// Ohne die Zuweisung an b würde hier der für die Integer allozierte Speicher
// nicht automatisch freigegeben, sobald der Zeiger a verschwindet. --> Speicherleck
}
printf ("%d\n", *b);
return 0;
}
#include <stdio.h>
#include <memory>
int main ()
{
int *b;
{
int *a = new int (42);
b = a;
delete a; // Problem: b zeigt noch auf den freigegebenen Speicher.
}
printf ("%d\n", *b);
return 0;
}
#include <stdio.h>
#include <memory>
int main ()
{
std::weak_ptr <int> b;
{
std::shared_ptr <int> a (new int (42));
b = a; // zeigt auf denselben Speicherplatz, ist aber kein "Besitzer",
} // d.h., mit dem Verschwinden von a wird der Speicherplatz freigegeben.
auto c = b.lock (); // Prüfe, ob der Speicher noch da ist.
// Falls ja, erzeuge einen shared_ptr c.
printf ("%d\n", *c); // c == NULL
return 0;
}
#include <stdio.h>
#include <memory>
int main ()
{
std::weak_ptr <int> b;
{
std::shared_ptr <int> a (new int (42));
b = a; // zeigt auf denselben Speicherplatz, ist aber kein "Besitzer",
} // d.h., mit dem Verschwinden von a wird der Speicherplatz freigegeben.
auto c = b.lock (); // Prüfe, ob der Speicher noch da ist.
// Falls ja, erzeuge einen shared_ptr c.
if (c) // c == NULL, weil der Speicherplatz bereits freigegeben wurde.
printf ("%d\n", *c);
else
printf ("Speicher wurde bereits freigegeben.\n");
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment