>>89
組み込みのことは知らないんだけど、サイズチェックして分岐するのはどうなん?

if (length * sizeof(uint32_t) < 32767) {
  uint32_t list[length];
  Test(list, length);
}
else {
  uint32_t list = new uint32_t[length];
  Test(list, length);
}