【发布时间】:2015-01-27 12:36:02
【问题描述】:
我必须从标准输入中读取一些字符(我不知道其中有多少,但不超过 MAX)并且我想将它们存储在一个数组中。这段代码 sn-p 正确吗?
char *c1 = (char*) malloc(MAX * sizeof(char)); //may be too much
fgets(c, MAX, stdin);
int size = strlen(c1);
char *c2 = (char*) realloc(c1, size * sizeof(char));
free(c1);
当您不知道要存储多少元素时,是否有更优雅的方法来确定为数组分配的正确内存量?
【问题讨论】:
-
那么为什么你会有一个 int * 来自 c1 和 c2,因为你正在为 char 分配数组。另一个想法是你可以声明一个静态数组 char c1[MAX+1];而不是调用 malloc。
-
char *c2 = (char*) realloc(c1, size * sizeof(char));free(c1);: 如果c1和c2不同,则c1已经发布。free(c1)将被释放,因为它已被释放。也一样不发布。
标签: c arrays memory dynamic char