For that matter, "print sizeof(X)" should print the same value when
debugging optimized code as when debugging unoptimized code, even if
the compiler has optimized X away to an empty structure!
I disagree. sizeof(X) in the code will return a value as small as
possible in that case (so that malloc-ing an array of structures)
does not waste memory, and the debugger should do the same.
I don't think that's a viable option. The value of sizeof(X) is a
compile-time constant, specified by a combination of ISO C and platform
ABI rules. In C++, sizeof(X) can even be used as a (constant) template
parameter, way before we get to any optimization.
Then you are right. This adds another constraint...
Paolo