在支持可变长度数组之前,我会像这样动态分配它们:
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) 中退出?