WIN32和其他c字符串之间的区别

我在一个小程序中得到了这个代码来读取文件:

#ifdef WIN32 unsigned char *buffer = (unsigned char *)alloca((unsigned int)ui.length); #else unsigned char buffer[ui.length]; #endif 

为什么Win32平台和其他平台的字符数组使用指针?

以前似乎不支持C99在堆栈上定义可变长度数组。 alloca基本上是这样做的。 似乎这个程序员有一个不支持VLA的WIN32编译器所以使用(支持得很好但非标准的)alloca。

有关堆栈溢出的更多信息: 为什么使用alloca()不被视为良好实践? 这个相当有用的数组摘要http://www.programmersheaven.com/2/Pointers-and-Arrays-page-2由Arthur在堆栈溢出post中提到。

Windows中没有什么特别之处。 不同的是Microsoft Visual C ++ 不支持 可变长度数组(VLA) (C99function),作者可能认为MSVC == WIN32,因此创建了条件。