问题标签 [memory-reallocation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 关于在实践中正确使用 realloc 的新手问题
我试图从实际的角度了解如何考虑内存分配。我想我理解如何实现malloc
,并且realloc
在基本意义上,但我不明白如何有效地做到这一点。
我的书籍和在线参考资料中的示例都显示realloc
在循环中使用,例如增加数组的长度。我不太清楚,但似乎这种方法可能不是很有效。
例如,在下面的测试代码中,正在构建一个 JSON 字符串以将文件名、大小和上次修改日期传递给另一个应用程序。事先不知道目录中有多少文件或数据元素的大小。我意识到这很简单,但是当事先不知道行数及其大小时,我在构建 SQLite 结果行的 JSON 字符串时遇到了类似的问题。这个文件信息代码示例更容易理解,但更重要的任务是 SQLite 数据。
在下面的代码中,将一段 JSON 的开头写入字符数组json
,然后在循环中写入每段文件信息,然后while
关闭 JSON 字符串。全部使用snprintf
.
现在,json
任意设置为长度1000;并且代码确实会生成此数据的正确格式的 JSON 字符串,只要它适合。
我的问题是,是否realloc()
真的应该在循环的每次迭代中使用while
来扩展json
一旦知道要写入的下一个数据的大小的大小?或者,realloc()
有点工作,最好在开始时分配一个更大的内存块,然后在剩余空间json
达到最小值或snprintf
返回一个指示写入截断的值时用另一个更大的块扩展它,这样来电少了realloc()
?
这在“现实生活”中是如何做到的,而不是在书中举例说明?
谢谢你。
c - realloc() 出了什么问题?
我正在编写一个使用 realloc() 的代码。以下是问题的简化版本。尽管代码看起来很明显,但它似乎不起作用。
该程序运行max_len=8
或低但不超过它。为什么会这样?提前致谢。