我在一个小程序中得到了这段代码来读取文件:
#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() 不被视为良好实践?这个相当有用的数组摘要http://www.programmersheaven.com/2/Pointers-and-Arrays-page-2Arthur 在堆栈溢出帖子中提到过。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)