c - 如何处理输出结构中的字符串分配

标签 c

处理其中包含一些字符串的输出结构的最佳方法是什么?

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/

相关文章:

c - 按位和C编程

c - 例如,为什么我不能在 C 中使用变量!=+或变量!=-

MySQL C API : Need example for initiating DB on *Embedded* mode

c - 如何创建轻量级内核线程?

c++ - RapidJSON 库通过索引获取数组中的值

c - 第一次通过后,recv()/send() 就乱序了

c++ - 我的容器类中应该允许多少整数?

c - C语言中如何删除字符串最后一部分

在 X-Macro 中打印数组元素时出现编译错误

检查程序是否正在被管道传输