This forum may not be the best to ask the question, but the answers on the other forums (that i know) were generally with respect to C for desktop pc (where memory management is different from that in embedded) and this forum has knowledgeable embedded people. hence...
I was worried about the following situation:
void function1() { ... //other variables char* ptr = myary; ... ptr = ReadNandFlash("myfile"); ... } char* ReadNandFlash(char* Filename) { FILE* file; char temp_ary[256]; file = fopen(Filename, "r"); if(file == NULL) { return NULL; } while(!feof(file)) { fread(temp_ary, sizeof(char), 256, file); } fclose(file); return ary; }
will the 'temp_ary' be destroyed as only the pointer value is returned back to the function1()?
This should solve the problem:
char* ReadNandFlash(char* Filename) { FILE* file; static char temp_ary[256]; file = fopen(Filename, "r"); ... }
It may solve the problem, but it will keep the 256bytes of space always reserved. It want that 'temp_ary' be destroyed once the data is copied. one way is to use 'calloc/malloc' and 'free'.
other way is to pass the 'myary' to 'ReadNandFlash()'. But i was still curious about the lifetime of data in the memory.
Google for automatic variables and you will find the answer to your question.
View all questions in Keil forum