Forum: Compiler & IDEs Type null argument where non-null required


von Sauger (Gast)


Lesenswert?

Nabend,

eine Frage:
Warum ergibt memset(NULL,0xaa,0xffff); eine Warnung:

Type null argument where non-null required

kann man zwar mit #pragma GCC diagnostic ignored "-Wnonnull"; abschalten
doch was gefällt memset daran nicht?

MfG

von Grrrr (Gast)


Lesenswert?

Das ist wie mit den Dosenöffnern. Wenn Du sie dazu benutzen willst, 
Stoff zu nähen geht was schief.
Lies mal die Doku von memset, dann wird einiges klarer.

von Hc Z. (mizch)


Lesenswert?

Aus Sicht der Sprache C kann ein NULL-Pointer nie auf etwas Gültiges 
zeigen.  Dass Du dort etwas hast (ich nehme mal an, Du willst die 64 k 
ab Adresse 0 setzen), nützt nichts.

Die Implementation könnte zwar etwas anderes als die Zahl 0 für den 
Pointer auf ein ungültiges Objekt wählen, das lässt C schon offen.  Es 
würde Dir aber nichts nützen, da C fordert, dass ein Verweis (im 
Pointer-Kontext) auf die Zahl 0 im Quelltext immer als 
Nullpointer-Referenz gewertet wird.

von Sauger (Gast)


Lesenswert?

Danke

von Rolf Magnus (Gast)


Lesenswert?

Wenn man tatsächlich die Adresse 0 will, paßt am ehesten sowas:
1
int address = 0;
2
memset((void*)address, 0xaa, 0xffff);

von Sauger (Gast)


Lesenswert?

Nabend,

@ Rolf Magnus
Ja stimmt. Ich kannte die Warnung bislang nicht. Ich habe hier ein gcc 
Projekt auf dem Tisch, dass nach Einschalten von -Wall mehr Warnungen 
erzeugt wie es Zeilen Quelltext hat.

MfG

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.