Also im Grunde versuche ich diesen Code aus, kompiliert in cl (Visual Studio C++ Compiler) und es druckt weiter 0. Sollte nicht gleich nullptr sein? KeineZwei Zeiger nicht richtig gelöscht
#include <iostream>
#include <string>
using namespace std;
int main() {
int* x;
x = new int(5);
int* y;
y = x;
delete x;
x = nullptr;
cout <<(y==nullptr)<< endl;
return 0;
}
Sie haben zwei verschiedene Variablen, die jeweils eine * Kopie * voneinander enthalten (anfänglich). Es ist so, als hätte man z.B. 'int x = 5; int y = x; x = 0; 'und dann wundern, warum' y' auch nicht gleich '0' ist? –
Ich verstehe den Downvoting nicht. Dies ist gut geschrieben mit einem kompilierbaren Beispiel. Bitte nicht aus Gründen der Offensichtlichkeit ablehnen. – Bathsheba
Wie überprüfe ich, ob y auf beschädigten Speicher verweist, bevor er gelöscht wird? – JukesOnYou