Hi everyone Does someone know how to change the length of on array during the run time execution? I mean how can I request memory to use it for a array? Is there somthing like malloc()? Thanks!
"Is there somthing like malloc()?" To answer your question directly there is indeed something like malloc(): malloc(), in fact. However, as others have pointed out using malloc() is a bad idea in most 8051 situations. If you need dynamic allocation because your total memory requirements exceed your available memory then declare arrays as local variables within functions and let the overlay manager perform its magic.
The small model benchmarks for malloc and free may be found at: http://www.keil.com/benchmks/c51_alloc.asp. The benchmark results are from the Knuth memory allocation test as described in Fundamental Algorithms, Section 2.5 Dynamic Storage Allocation. In other words, the results in the benchmark are likely to be close to what you see in your implementation. Note that the free() function in the Keil libraries merges adjacent free blocks. This is NOT true of most malloc/free implementations. Jon
"To answer your question directly there is indeed something like malloc(): malloc(), in fact." And then to answer your question even more directly about runtime changes, after malloc(), you would use realloc() to change size. http://www.keil.com/support/man/docs/c51/c51_realloc.htm