gpt4 book ai didi

c - 我怎么知道要重新分配多少内存?

转载 作者:太空狗 更新时间:2023-10-29 15:22:25 26 4
gpt4 key购买 nike

我有一个关于我的应用程序设计的问题。这是伪代码:

char* buffer_to_be_filled = (char*) malloc(somesize);
fill_the_buffer(buffer_to_be_filled);
free(buffer_to_be_filled);

问题是我不知道fill_the_buffer 需要多少大小。

我在考虑 fill_the_buffer 函数中的解决方案。我也许可以在需要的时候重新分配里面的空间;问题是,有什么方法可以查明我有多少可用空间?

这通常是如何解决的?我认为分配缓冲区的人也应该重新分配缓冲区,对吧?

注意:我正在使用 fread 函数填充缓冲区,所以我不知道我需要多少空间。

最佳答案

你的函数不能 realloc 传递给它的指针,因为 realloc 不能保证返回传递给它的相同指针(新缓冲区可能太大而无法就地扩展)。典型的解决方案是让函数接受指定缓冲区大小的第二个参数,如果缓冲区太小则返回错误代码。理想情况下,错误代码会告诉用户缓冲区需要多大,这样他们就可以自己重新分配并调用函数。例如,从 snprintf 的手册页(有这个问题):

The functions snprintf() and vsnprintf() do not write more than size bytes (including the terminating null byte ('\0')). If the output was truncated due to this limit then the return value is the number of characters (excluding the terminating null byte) which would have been written to the final string if enough space had been available. Thus, a return value of size or more means that the output was truncated.

关于c - 我怎么知道要重新分配多少内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13103110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com