处理其中包含一些字符串的输出结构的最佳方法是什么?
struct info
{
wchar_t * text;
size_t text_len;
}
void Foo(struct info * output);
用户需要自己分配文本
输出可以循环回收
很难知道需要分配多少内存,如果要存储输出可能会浪费内存(例如,保留一个项目列表)在 Foo 中分配文本
用户释放输出很痛苦,因为他之前必须释放每个文本(可以制作一个 FreeStructInfo 来减轻痛苦)
循环内不太好从 Foo 内部分配输出
Foo 可以在结构信息中嵌入文本,用户只需要释放输出即可释放所有。
适合存储(Foo 知道它需要分配多少),
但如果在循环中用作短期变量可能会对内存造成很大压力,因为它无法回收。
Windows 使用“用户需要自己分配文本”,您要么分配足够的文本,要么需要调用该函数两次以获得所需的大小。
最佳答案
没有最好的方法 - 您建议的所有选项都会在某个时间或其他时间使用。重要的是做好文档记录,并在可行的情况下在库中的所有函数中保持一致。
关于c - 如何处理输出结构中的字符串分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/822815/