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

Reply via email to