We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I have some code running on an 8051 based processor that is quite large and complex and it also uses a few arrays. To make sure that I can avoid mistakes accessing memory location that do not exist, I'd like to know if there are anyway to get the C51 Compiler to catch this type of mistakes.
BYTE xdata myArray[8] BYTE i; for (i=0;i<10;i++) myArray[i]=i;
The compiler has no problem with that and doesn't report memory leaks. Are there any ways to make the compiler to generate an error or even a warning?
1) that is not what I call memory leaks, It is BUGS. 2) the example you give is BAD, it uses a numeric value which should make it obvious that this is wrong. 3) it not ythe purpose of a compiler to protect you against yourself 4)it is very easy to do a thing like #ifdef DEBUG if (var > sizeof myArray) { make the program error out } #endif
Erik
I agree with you Erik, you could call that a bug, What you suggest with the #ifdef, is good, I didn't think of it. Thanks for that.
Laurent
#ifdef DEBUG if (var > sizeof myArray) { make the program error out } #endif
But how does that square with the "Debug what you fly; fly what you debug" mantra...?
It does not. However, there is such a thing as "a piece of added code to see if the bug you found while you Debug what you fly, fly what you debug originate in this place".
I DO have flycatchers in production code, but only for places where outside stimuli may cause e.g. a variable to be outside bounds, as far as "internally generated" values, I do not.