在支持变长数组之前,我通常会这样动态分配它们:
int foo(size_t n)
{
int *arr = malloc(n * sizeof int);
if (!arr) return ENOMEM; /* not enough memory */
.
. else do stuff with arr[]
.
free(arr);
return 0;
}
使用可变长度数组,现在我可以让代码看起来更加简洁:
int bar(size_t n)
{
int arr[n];
.
. do stuff with arr[]
.
return 0;
}
但是现在我没有“内存不足”检查。实际上,如果n太大,程序会崩溃。
如果n太大,我如何优雅地从bar(n)中退出?