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.

Visual Studio
Visual Studio
Eine Familie von Microsoft-Sammlungen integrierter Entwicklungstools zum Erstellen von Anwendungen für Windows, das Web und mobile Geräte.
37 Fragen
C++
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.
17 Fragen
{count} Stimmen

Akzeptierte Antwort
  1. Dimitar Denkov 1,665 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

Fragesteller*innen können Antworten als akzeptierte Antworten markiert werden, wodurch Benutzer*innen wissen, dass diese Antwort das Problem gelöst hat.