用数组[1]替代堆分配

摘要

本文探讨了在C语言中使用数组[1]替代堆分配的写法及其作用。通过示例代码,作者分析了这种方法的优点,包括方便地址访问、减少拷贝操作以及利用栈分配实现类似指针的效果。文章指出,这种写法在某些场景下可以提高性能,并具有RAII的特性。



这是在学习风云的协程库时, 在他的博文里提到了这种写法. glibc或者linux源码里面也能见到, 但是没有仔细想想为什么.

基本写法

1
2
3
4
5
typedef struct __A__{
    // some members
}A;

A a[1];

平常见到这种写法也可能很少注意, 有什么用呢?

作用

  1. 方便使用地址访问;
  2. 减少拷贝操作(由于1的特性);
  3. 使用栈分配而不是堆分配得到类似指针的结果.

这有点像是RAII了.