【发布时间】:2011-10-03 03:48:56
【问题描述】:
我一直想知道如何才能摆脱这种情况:
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, strlen(copy));
return 0;
}
char 数组copy 无论如何都会被分配,程序运行良好,打印出原件和副本。 Valgrind 没有抱怨任何事情。
我认为在没有 malloc 的情况下,动态数组在 C 中是不可能的。我错了吗?
【问题讨论】:
-
"dynamic" == "resizable",不一定是"编译时常量"。 C99 介绍了这个。
-
如果 strlen(argv[1]) 足够大,你可能无法逃脱!