c - gcc错误生成

标签 c variables memory-management

为什么当我尝试编译包含以下两行的代码时,gcc 或 clang 都没有生成错误?

int palindrome(char s[]){
    char s2[strlen(s)];

我认为在这种情况下,您必须为 s2 动态分配内存。

最佳答案

GCC 对此行为进行了扩展,它在 C99 中也是标准的,称为可变长度数组。

http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html

由于 GCC C 和 C99,Clang 支持它:http://clang.llvm.org/compatibility.html#vla

关于c - gcc错误生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6159403/

相关文章:

c - 在Linux下用C打开并写入BMP文件,或将现有的Windows应用程序移植到Linux

c - 有什么方法可以移动文件的内容而不将其存储在 c 的数组中?

c - 分离数据并存储在数组中

python - Session.run() 如何选择要运行的子图

batch-file - 在 if 语句内的设置变量内扩展 %userprofile%。批

c - 打印出文件中有多少个字母表中的每个字符。 - C

linux - 如何在没有编辑器的情况下将变量 append 到 Shell 文档

方法调用时的c++段错误

c++ - 将链递归插入内存失败

linux - 物理上连续的大内存区域