【发布时间】:2011-02-23 18:53:29
【问题描述】:
您好,我使用 malloc() 生成这样的缓冲区,其中缓冲区是 char*
buffer = (char*)malloc(chunksize+1);
for (k = 0; k < chunksize; k++) {
buffer[k] = (char) (j+k);
}
但是,在调试器中,我可以看到缓冲区 [3] 例如是我写入的字符,但缓冲区缓冲区是空的(很多空格)。但是我第二次在free(buffer)之后在缓冲区中写东西,它显示了我第一次写的内容,并覆盖了它。谁能告诉我为什么?谢谢!!
【问题讨论】:
-
j是什么?chunksize是什么?你真的说“在free(buffer)之后在缓冲区中写东西”? -
对不起我的错。它在一个循环中,在循环结束时释放缓冲区,但我每次在写之前都会做 malloc,就像显示的代码一样
-
不要做这两个演员。至少它们是多余的,第一个甚至可能隐藏诸如忘记包含原型之类的问题。
-
不应该是
malloc((chunksize+1)*sizeof(char))吗? (我不知道 C,但这看起来不对。) -
sizeof(char) 始终为 1,因此放弃乘以 1 的无意义部分。