Was bedeutet ein Singleton-Zeiger in Bezug auf C?
In diesem Fall denke ich Coverity zwischen einem Array von char * und einem Zeiger auf eine einzelnen char*
indem die Adresse dieses Array erstellt, die die Differenz bezieht.
Coverity warnt Sie, dass die Adresse des ersten Elements von buf
zu func
vorbei, Sie machen es schwieriger für sich selbst sicher zu diesem Array zu schreiben, weil man nicht einfach seine Größe bestimmen können.
Es ist schwierig, sicher zu sein, ohne den gesamten Code zu sehen, aber buf
Annahme ist ein Array Sie irgendwo in Ihrem Top-Level-Funktion deklariert haben dann die Verwendung sizeof
Operator auf buf
aus dieser Funktion wird die Größe des Arrays ergeben .
Wenn jedoch die Adresse des zu buf
func
an der Linie
func(&inbuf);
passieren ... func
lediglich empfängt einen Zeiger auf das erste Element des Arrays. Von func
können Sie sizeof
nicht mehr verwenden, um die Größe des Arrays zu bestimmen - it will just return the size of the pointer - und so können Sie nicht sicher in diesen Zeiger schreiben, ohne implizit zu verstehen, wie viel Speicherplatz das Array enthält.
Dies macht für fragile Code und ist daher schlechte Praxis.
(Nichts davon ist etwas mit dem Singleton Pattern zu tun)
Ein Singleton ist wie ein Global, das nur einmal erstellt wird und jederzeit aufgerufen werden kann. Überprüfen Sie dieses für mehr: http://www.infernodevelopment.com/singleton-c – NKamrath
zeigen Sie uns die Linie, die buf erklärt. –