【发布时间】:2020-09-27 17:50:22
【问题描述】:
我是 C 编程的新手,但遇到以下问题。
我有一个char *,它将存储一个包含任意数量字符的字符串,我正在将此字符串添加到队列中。然后我想向该队列添加更多字符串,所以我编写了以下代码:
(我正在从二进制文件中读取字符串)
char *follower;
while (n!=0) {
follower = (char *) malloc(sizeof(char));
/*
... Code where I fill follower string using reallocs etc ...
*/
QUEUE_add(follower);
free(follower);
}
当我尝试编译这个时,我注意到队列总是空的,因为我在QUEUE_add 之后写了free。我写它是为了重用follower 变量来填满队列。
如何“发送”一份follower 存储的副本以便正确添加到队列中?
【问题讨论】:
-
OT 但你也应该知道 malloc(sizeof(char)) 只分配一个字节,这对于存储字符串没有用,因为它只有字符串终止符的空间(即你只能存储一个空字符串)。此外,根据定义,sizeof(char) 始终为 1,因此您应该改为 malloc(n+1) 其中 n 是您要存储的字符串的最大长度,+1 为字符串终止符提供空间。
-
我用 malloc 初始化
follower字符串(也许这是多余的),然后我使用 reallocs 请求更多内存,直到所有字符串都完成。示例中没有写,我的错
标签: c queue dynamic-memory-allocation