Login Page - Create Account

Support Board


Date/Time: Fri, 18 Oct 2024 06:17:37 +0000



Post From: Issue with persistant vars and structs

[2015-10-25 07:50:31]
KhaosTrader - Posts: 128
Hi,

I am having some strange behavior in my study, I wonder if its because of my initialization and/or release of the variable references.. Am I doing it correctly?


Note: s_SwingInfo is a struct.

Here is my code:


  s_SwingInfo* p_LongSwings = (s_SwingInfo*)sc.GetPersistentPointer(1);
  s_SwingInfo* p_ShortSwings = (s_SwingInfo*)sc.GetPersistentPointer(2);

  int& NbrLongSwings = sc.GetPersistentInt(3);
  int& NbrShortSwings = sc.GetPersistentInt(4);


  if (sc.LastCallToFunction)
  {
    if (p_LongSwings != NULL)
    {
      sc.FreeMemory(p_LongSwings);
      sc.SetPersistentPointer(1, NULL);
    }
    return;

    if (NbrLongSwings != NULL)
    {
      sc.SetPersistentPointer(2, NULL);
    }
  }

  if (sc.LastCallToFunction)
  {
    if (p_ShortSwings != NULL)
    {
      sc.FreeMemory(p_ShortSwings);
      sc.SetPersistentPointer(2, NULL);
    }
    return;

    if (NbrLongSwings != NULL)
    {
      sc.SetPersistentPointer(2, NULL);
    }
  }


  if (sc.UpdateStartIndex == 0)
  {
    NbrLongSwings = 0;
    NbrShortSwings = 0;
  }


  if (p_LongSwings == NULL)
  {
    //Allocate an array of 20k structs.
    p_LongSwings = (s_SwingInfo *)sc.AllocateMemory(20000 * sizeof(s_SwingInfo));

    if (p_LongSwings != NULL)
      sc.SetPersistentPointer(1, p_LongSwings);
    else
      return;
  }

  if (p_ShortSwings == NULL)
  {
    //Allocate an array of 20k structs.
    p_ShortSwings = (s_SwingInfo *)sc.AllocateMemory(20000 * sizeof(s_SwingInfo));

    if (p_ShortSwings != NULL)
      sc.SetPersistentPointer(2, p_LongSwings);
    else
      return;
  }