Hexley Ball
/
stringtest
This program explores how the compiler treats const string arrays.
Revision 0:07e4abe04bad, committed 2011-04-05
- Comitter:
- hexley
- Date:
- Tue Apr 05 20:37:25 2011 +0000
- Commit message:
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 07e4abe04bad main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Apr 05 20:37:25 2011 +0000 @@ -0,0 +1,147 @@ +/********************************************************************************* +* This test program loads a large array of const strings, then reports how much +* RAM is still available. +* +* Without the array, 24,196 bytes of RAM are free. +* With an 8000-char array, 13,476 bytes of RAM are free +* The const string of 8000 chars thus consumes 10720 bytes of RAM. +*********************************************************************************/ +#include "mbed.h" +#include <string> + +DigitalOut fan(p21); // Needed for my breadboard + +#define TEST8000 // Comment this line to find the baseline value for free RAM + +#ifdef TEST8000 +// teststring is an array of 100 x 80 character strings +const string teststring[] = { + "This is the first line of 100 80-character strings in the 'teststring[]' array.", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + "0123456789012345678901234567890123456789012345678901234567890123456789012345678", + }; +#endif + +int main() { + int low = 0; + int high = 0x8001; + fan = 0; + +#ifdef TEST8000 + // Include at least one reference to the array, to keep the optimizer happy + printf("The first string is %s\r\n", teststring[0]); +#endif + + // Compute free memory, using Segundo Equipo's AvailableMemory.cpp code + __disable_irq(); + while (high - low > 1) { + int mid = (low + high) / 2; + void* p = malloc(mid); + if (p == NULL) { + high = mid; + } else { + free(p); + low = mid; + } + } + __enable_irq(); + + printf("Test program 'stringtest' reports space available in RAM = %d\r\n", low); +}
diff -r 000000000000 -r 07e4abe04bad mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Apr 05 20:37:25 2011 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/63bcd7ba4912