Freigeben über

Was bewirkt die Anweisung '*(new int) = 17;'

Heinz Koeck 100 Zuverlässigkeitspunkte
2024-02-04T10:25:19.7533333+00:00

Diese Anweisung '*(new int) = 17;' habe ich aus einem Buch ohne Erklärung. Der Compiler bringt keine Meldung und die Sinnhaftigkeit ist mir nicht klar.

Entwicklertechnologien | C++
Entwicklertechnologien | C++
Eine hochentwickelte, allgemeine Programmiersprache, die als Erweiterung der Programmiersprache C entwickelt wurde und neben den Möglichkeiten der Speicherbearbeitung auf untergeordneter Ebene auch objektorientierte, generische und funktionale Features bietet.
Entwicklertechnologien | Visual Studio | Andere
Entwicklertechnologien | Visual Studio | Andere
Eine Familie von Microsoft-Suites mit integrierten Entwicklungstools zum Erstellen von Anwendungen für Windows, das Web, mobile Geräte und viele andere Plattformen. Verschiedene Themen, die nicht in bestimmte Kategorien passen.
{count} Stimmen

Antwort, die vom Frageautor angenommen wurde
  1. Dimitar Denkov 1,740 Zuverlässigkeitspunkte
    2024-02-05T08:57:00.0433333+00:00

    Hallo Heinz,

    Mit dem new int erzeugt der Code einen Zeiger auf ein int im Freispeicher (Heap) und mit dem Sternchen wird er dereferenziert, d. h. man greift auf das entsprechende Objekt im Stapelspeicher (oder Kellerspeicher) zu. Als Wert für dieses Objekt (worauf der Zeiger zeigt) wird dann eine Konstante (17) zugewiesen. Das Problem hier ist, dass der erzeugte Zeiger in keiner Variablen gespeichert wird und dementsprechend künftig mit dem delete-Operator nicht freigegeben werden kann. Dadurch wird ein Speicherleck (auf Englisch: Memory Leak) heraufbeschworen. Ein ähnlicher Fall wird in diesem Artikel besprochen, wenngleich dort zumindest der im Stapelspeicher zugewiesene Wert als Variable (dort gameboard) gespeichert wird: https://stackoverflow.com/questions/46699180/usage-of-asterisk-before-newdynamic-allocation-in-c

    Gruß, Dimitar

    Eine Person fand diese Antwort hilfreich.
    0 Kommentare Keine Kommentare

0 zusätzliche Antworten

Sortieren nach: Am hilfreichsten

Ihre Antwort

Antworten können von Fragestellenden als „Angenommen“ und von Moderierenden als „Empfohlen“ gekennzeichnet werden, wodurch Benutzende wissen, dass diese Antwort das Problem des Fragestellenden gelöst hat.