This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Return Pointer to local string, destroys the string or not?

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()?

Parents
  • "it will keep the 256bytes of space always reserved. It want that 'temp_ary' be destroyed once the data is copied"

    What, exactly, do you mean by "destroyed"?

    "one way is to use 'calloc/malloc' and 'free'"

    No, that would not physically "destroy" the data - it would still be there. And you'd still have to keep memory reserved for the Heap.

Reply
  • "it will keep the 256bytes of space always reserved. It want that 'temp_ary' be destroyed once the data is copied"

    What, exactly, do you mean by "destroyed"?

    "one way is to use 'calloc/malloc' and 'free'"

    No, that would not physically "destroy" the data - it would still be there. And you'd still have to keep memory reserved for the Heap.

Children