On Tue, 22 Oct 2013 14:04:57 +0000, Dave Angel wrote: [...] > I agree with most of what you say in the message,
Glad to hear I wasn't completely full of it. As a non-C developer, I'm very conscious that a lot of what I know about C is second hand. > but here you go on to > say the C code is unsafely skipping initialization, which is not the > case. Are you talking generically, or specifically about the C code referenced in the link I gave? "Memory is always zeroed" is one of the advantages of Go over C and C++, at least according to Rob Pike: http://commandcenter.blogspot.com.au/2012/06/less-is-exponentially- more.html > By the way, a C compiler typically handles any initialization of a > static variable the same way. So if you declare and initialize a static > variable as > > int myvar = 34 * 768; > > it'll put the product directly in the executable image, and no runtime > code is generated. Yes, that's a keyhole optimization, CPython does the same sort of thing: py> import dis py> dis.dis(compile("myvar = 34 * 768", "", "exec")) 1 0 LOAD_CONST 3 (26112) 3 STORE_NAME 0 (myvar) 6 LOAD_CONST 2 (None) 9 RETURN_VALUE > Perhaps you were thinking of an automatic variable, which is not > initialized unless the programmer says so, and is then initialized with > code. No, I was thinking of an array. Arrays aren't automatically initialised in C. -- Steven -- https://mail.python.org/mailman/listinfo/python-list