Hi all,
I d love to know how I can allocate data through a function, and after the function is returned the data is still allocated. This is both for basic types (int, char**) and user defined types. Below are two snipsets of code. Both have the allocation within the function though after the return the allocation goes.
int* nCheck = NULL;
int nCount = 4;
CallIntAllocation(nCheck, nCount);
nCheck[1] = 3; // Not allocated!
...
CallIntAllocation(int* nCheck, int nCount)
{
    nCheck = (int*)malloc(nCount* sizeof(int));
    for (int j = 0; j < nCount; j++)
     nCheck[j] = 0;
}
The same behaviour for as before though for user defined type:
typedef struct criteriatype
{
    char szCriterio[256];
    char szCriterioSpecific[256];
} _CriteriaType;
typedef struct criteria
{
    int nCount;
    char szType[128];
    _CriteriaType* CriteriaType;
} _Criteria;
...
_Criteria* Criteria;
AllocateCriteria(nTypes, nCriteria, Criteria);
...
void AllocateCriteria(int nTypes, int nCriteria[], _Criteria* Criteria)
{
    int i = 0;
    int j = 0;
    Criteria = (_Criteria*)malloc(nTypes * sizeof(_Criteria));
    for (i = 0; i < nTypes; i ++)
    {
     // initalise FIRST the whole structure
     // OTHERWISE the allocation is gone
     memset(&Criteria[i],'\0',sizeof(_Criteria));
     // allocate CriteriaType
     Criteria[i].CriteriaType = (_CriteriaType*)malloc(nCriteria[i] * sizeof(_CriteriaType));
     // initalise them
     for (j = 0; j < nCriteria[i]; j ++)
      memset(&Criteria[i].CriteriaType[j],'\0',sizeof(_CriteriaType));
    }
}
Any ideas? I think I need to pass the pointers as a reference, though how can i do so?
Thanks in advance, Sunscreen