Che cosa significa un puntatore singleton in termini di C?
In questo caso ritengo Coverity si riferisce alla differenza tra un array di char * e un puntatore a una singola char*
creato prendendo l'indirizzo di tale matrice.
Coverity che passando l'indirizzo del primo elemento di buf
a func
, si sta rendendo più difficile per voi stessi a scrivere in modo sicuro a tale matrice, perché non è possibile determinare con facilità la sua dimensione è di avviso.
E 'difficile essere sicuri senza vedere tutto il codice, ma assumendo buf
è un array che hai dichiarato da qualche parte nella vostra funzione di primo livello quindi utilizzando l'operatore sizeof
su buf
da quella funzione produrrà la dimensione dell'array .
Tuttavia, quando si passa l'indirizzo di buf
per func
alla linea
func(&inbuf);
... func
solo riceve un puntatore al primo elemento di tale matrice. Da func
non è più possibile utilizzare sizeof
per determinare la dimensione dell'array - it will just return the size of the pointer - e quindi non è possibile scrivere in modo sicuro su quel puntatore senza una comprensione implicita di quanto spazio contiene la matrice.
Questo rende fragile il codice, e quindi è una cattiva pratica.
(Niente di tutto questo è nulla a che fare con la Singleton Pattern)
Un singleton è come un globale che verrà creato una sola volta e accessibile in qualsiasi momento. Controlla questo per ulteriori informazioni: http://www.infernodevelopment.com/singleton-c – NKamrath
mostraci la linea che dichiara buf. –