I've never done this, but I'm not sure why the below array definition is wrong.
I have this example code:
typedef struct _SomeObjType {
   int val;
   ...
} SomeObjType;
static SomeObjType *oObject = NULL;
oObject = malloc( sizeof(SomeObjType) );
oObject->val = 300;
static Err foo (SomeObjType *object) {
   if(object == NULL) 
   return -1;
   unsigned char table[object->val];
   ...
}
Why is the above array definition in foo dangerous?