Hi

I am having very weired, and most probably very simple problems (but I am too blind to see it so far) with pointers indirection levels, memory allocation and freeing,

things like in one file:


Code:
      mystructtype * p = NULL;
      initStruct (&p);
then the function is:


Code:
   void initStruct (mystructtype * * p {
      (*p) = (mystructtype *) malloc(sizeof(mystructtype)); // it blows up here
        if ((*p) == NULL)
            printf ("couldn't create struct\n");
        // I do other initliazation for the structure elements, like other pointers
    }
and mystructtype is


Code:
   typedef struct tag_estruct  {
      long elscalar;
      unsigned long eulscalar;
      unsigned long * eularray;
    } estruct ;
     
    typedef struct tag_mystructtype{
      long lscalar;
      long * lpscalar;
      unsigned long ulscalar;
      unsigned long * ulparray; 
      estruct * epstruct; 
    } mystructtype;
It is actually working in a multhreaded/multiprocess program, and I needed to test it in isolation with other things in a sequential program, but with the full data structure around it, and it is blowing up now,

I have another similar problem, about allocating memory for an array encabsulated in dynamically allocated structure as well, this time the structure is allocated fine, but then it blows up when I allocate array of 5 integers for example, work most of the time, and then blow up with some test cases,

for example:

Code:
   myrecType * myrec;

    myrec = (myrecType *) malloc (sizeof(myrecType));
    myrec->arrayofinterger  = NULL; // I tried removing this one, but it is still blows up
    myrec->arrayofinterger = (int *) malloc (sizeof(int) * 5); // it blows up here
Also, so many problems with blowing up when freeing memory, I removed some of the free statements, to keep going, but I think that's why I have problems, even on smaller isolated tests, I still get these,

I heard before about structure hacking in C, and not sure if this is related, but I can not find online references about this kind of memory allocations and passing arguments by several levels of indirection to allocate somewhere, and keep using the same memory location without copying to temporaries,

I try on several gcc compiler, and not sure if the compiler version is what causes it, but 2 compilers now have given me these:

gcc (GCC) 4.1.1 20060525 (Red Hat 4.1.1-1)
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-3)


I appreciate any help I can get to sort this out, like sample code that can do similar things, or links to tutorials that describe similar functions, not basic pointers exmaples,