众所周知,大部分情况下,操作一个自动(栈)变量的速度是比操作一个堆上的值的速度快的.然而,栈数组的大小是在编译时确定的(不要说 C99 的VLA,那货的 sizeof 是运行时计算的),但是堆数组的大小在运行时确定,很自由.此外,栈空间比堆空间有限,前者只有几MB,而后者基本上就是你系统内存的大小. 正因为这样,我们想组合两者的优势,既要享受堆空间的自由,又想要在数组较小的时候使用栈空间来加快速度,并且结合两者不会产生额外的开销,这时候,我们需要Short String Optimization…