 
                            ...
| Code Block | ||
|---|---|---|
| 
 | ||
| 
struct flexArrayStruct {
  int num;
  int data[1];
};
/* ... */
size_t array_size;
size_t i;
/* initialize array_size */
/* space is allocated for the struct */
struct flexArrayStruct *structP 
  = (struct flexArrayStruct *) 
     malloc(sizeof(struct flexArrayStruct) 
          + sizeof(int) * (array_size - 1));
if (structP == NULL) {
  /* handle malloc failure */
}
structP->num = 0;
/* access data[] as if it had been allocated
 * as data[array_size] */
for (i = 0; i < array_size; i++) {
  structP->data[i] = 1;
}
 | 
...
| Code Block | ||
|---|---|---|
| 
 | ||
| 
struct flexArrayStruct{
  int num;
  int data[];
};
/* ... */
size_t array_size;
size_t i;
/* initialize array_size */
/* Space is allocated for the struct */
struct flexArrayStruct *structP 
  = (struct flexArrayStruct *)
     malloc(sizeof(struct flexArrayStruct) 
          + sizeof(int) * array_size);
if (structP == NULL) {
  /* handle malloc failure */
}
structP->num = 0;
/* Access data[] as if it had been allocated 
 * as data[array_size] */
for (i = 0; i < array_size; i++) {
  structP->data[i] = 1;
}
 | 
...