代码之家  ›  专栏  ›  技术社区  ›  Werner Echezuria

如果我不知道字符指针的大小,我如何分配内存?

c
  •  0
  • Werner Echezuria  · 技术社区  · 15 年前

    我有一些递归函数,但是我需要解析一个字符串,我不知道这个字符串可以有多长。什么是分配内存的合适方法?

    4 回复  |  直到 15 年前
        1
  •  6
  •   P Shved    15 年前

    使用 realloc() 当耗尽到目前为止分配的内存时增加字符串大小。

    每个realloc应该至少是字符串大小的两倍——那么,与一次幸运地分配必要长度的字符串相比,用于重新分配的总时间不会渐进地有所不同。

        2
  •  1
  •   Dima    15 年前

    要么您需要输入字符串的大小,以便可以分配足够的内存,要么您必须对字符串的最大长度(例如1024个字符)设置一些合理的限制。

        3
  •  0
  •   Michał Górny    15 年前

    如果你找不到确切的尺寸(或者买的太贵),你应该假设一些价值。如果您可以估计字符串不会超过的最大大小,那么只需分配一个该大小的缓冲区(并且可能 realloc() 它在填充字符串后,以避免浪费空间)。

    如果您不能假定这样的最大值,那么您应该像pavel建议的那样,假定一些可能的值,然后在字符串出现时扩展该区域。

        4
  •  0
  •   graff    15 年前

    在UNIX(freebsd)上,您也可以使用reallocf()。