すいません、昨日のアホです
int main(void)
{
  struct {
    char *mem;
    unsigned int memSize;
  }st;
  
  st.mem = (char *)malloc(2);
  st.memSize = 2;
  memset((char *)st.mem,'\0',st.memSize);
  printf("Here is main \n");
  printf("st.mem -> %p st.memSize -> %d \n",st.mem,st.memSize);
  st.mem = reallocMemory(st.mem,&st.memSize);// ここで領域を拡大してるつもり・・・
  printf("Turn back from func\n");
  printf("st.mem -> %p st.memSize -> %d \n",st.mem,st.memSize);
  printf("st.mem -> %s \n",st.mem);
  return 0;
}
char *reallocMemory(char *target,unsigned int *size)
{
  char str[409600];
  memset((char *)str,'a',409600);
  str[409600] = '\0';
  
  if (*size < strlen(str)){
    target = realloc(target,strlen(str)+1);
    *size = strlen(str)+1;
  }
  strcpy (target,str);
  return target; //新しいポインタを返してるつもり・・・
}
このコードを書いてテストすると、思ったように動いたのですが、
時々返ってきたポインタが変な所を指している様です。
パラメータと返り値をどちらもポインタのポインタにしたら上手くいくのですが
何処かでローカル変数を指してますでしょうか。。。。