首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C中没有malloc的动态数组?

C中没有malloc的动态数组?
EN

Stack Overflow用户
提问于 2011-07-12 05:20:34
回答 2查看 10.3K关注 0票数 21

我一直在想,我怎么才能逃脱惩罚:

代码语言:javascript
复制
int main(int argc, char **argv) {
    printf("%p %s %d\n", &argv[1], argv[1], strlen(argv[1]));
    char copy[strlen(argv[1]) + 1];
    strcpy(copy, argv[1]);
    printf("%p %s %d\n", &copy, copy, strlen(copy));
    return 0;
}

字符数组copy无论如何都会被分配,程序运行正常,打印出原件和副本。Valgrind不会抱怨任何事情。

我认为如果没有malloc,动态数组在C中是不可能的。我说错了吗?

EN

回答 2

Stack Overflow用户

发布于 2011-07-12 05:26:08

可变长度数组最初是一种GCC extension,但也被C99采用。

它们仍然被分配在堆栈上,所以让它们“巨大”被认为是不好的风格(有一天可能会打破你的习惯)。

票数 7
EN

Stack Overflow用户

发布于 2011-07-12 05:52:30

甚至在“可变长度数组”出现之前,就已经有了“可变长度数组”,感谢gcc和C99:

alloca() --允许动态分配堆栈(“自动”)内存。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6656731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档