On Sat, 6 Nov 2010, David Brownell wrote: > --- On Sat, 11/6/10, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > > > Are you sure that adding an initializer > > like this will zero out the > > padding bytes? It might be safer just to call > > memset. > > ISTR the C standard says things get initted to > zero in this case too ... and that compilers will > as a rule use memset to do it. One could look > at the generated code to make sure of that. Unfortunately I don't have a copy of the C standard here to consult. However... Although I'm perfectly willing to believe that the standard requires fields in a structure to be initialized to 0 if they aren't mentioned explicitly in the initializer, I'm considerably more doubtful that it also requires padding to be initialized! And I certainly wouldn't want to depend on compilers _always_ using memset to do this initialization. > There's certainly a fair amount of code I've seen > that uses runtime initializers like that, to zero > memory. I can't believe i's _all_ broken! ;) Zeroing memory that belongs to a declared field is different from zeroing padding bytes. Maybe what you remember seeing is the first and not the second. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html