Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

In this noncompliant code example, a variable-length array of size size is declared. The size is declared as size_t in compliance with recommendation INT01-C. Use rsize_t or size_t for all integer values representing the size of an object.

Code Block
bgColor#FFCCCC
langc
void func(size_t size) {
  int vla[size];
  /* ... */
}
/* ... */

...

This compliant solution ensures the size argument used to allocate vla is in a valid range (between 1 and a programmer-defined maximum); otherwise, it uses an algorithm that relies on dynamic memory allocation.

Code Block
bgColor#ccccff
langc
enum { MAX_ARRAY = 1024 };

void func(size_t size) {
  if (0 < size && size < MAX_ARRAY) {
    int vla[size];
    /* ... */
  } else {
    /* Use dynamic allocation */
  }
}
/* ... */

...