Es fiel mir auf, dass, wenn ich einen Teil des Speichers mit einem const Zeiger deklarieren, etwa so:Gibt es eine Kehrseite einen Zeiger für zugewiesenen Speicher zu deklarieren als const verwendet
SomeType * const pointer = malloc(sizeof *pointer);
Ich kann nicht aus Versehen „verlieren "der Zeiger, (dh durch Ändern oder Überschreiben). Dies scheint eine bequeme "Erinnerung" zu sein, dass die Erinnerung, auf die sie verweist, befreit werden muss. Gibt es einen Nachteil, dies zu tun? Eine Anzahl von Dingen kommt in den Sinn, möglicherweise aufgrund des Zurückgebens des Zeigers von einer Funktion oder weil es möglicherweise mit einer großen Anzahl von Bibliotheksfunktionen inkompatibel ist. Diese scheinen jedoch eher Unannehmlichkeiten als ein tatsächlicher Fehler zu sein.
Was meinen Sie mit "den Zeiger von einer Funktion zurückbringen"? Sie können eine Adresse aus einer Funktion zurückgeben, müssen diese aber einer Aufrufvariablen im Aufrufer zuordnen, die - wenn Sie das deklarieren - nach der Initialisierung nicht geändert werden kann. Was du schon bemerkt hast. Damit? – Olaf
@Olaf Ich weiß es nicht, deshalb frage ich. Würde das Probleme verursachen? – Tibrogargan
Wenn es const ist, können Sie die Größe nicht ändern mit 'realloc()' – Dmitri