【问题标题】:Precise Dynamic Memory Allocation精确的动态内存分配
【发布时间】:2013-09-27 21:00:04
【问题描述】:

我想以精确的精度为输入时大小未知的输入字符串动态分配内存,即 如果字符串是“堆栈”,我只想分配 6 个字节。

我想唯一的方法是根据输入继续增加数组的上限,但我无法弄清楚这段代码。

【问题讨论】:

  • malloc(6) 将分配 6 个字节。但是,内存分配器从不在内部以字节精度分配内存。记账确切的大小会花费更多,而且会很慢。

标签: c string memory-management realloc


【解决方案1】:

strdup() 是你的朋友。

char *p = strdup("stack");

【讨论】:

  • Strdup() 很棒,但有没有办法在不使用字符串函数的情况下做到这一点?
  • @YasasveeAtreya,您可以使用下面的 strlen/malloc/strcpy 答案,也可以只使用 malloc 自己动手。
【解决方案2】:

你需要测量字符串的长度,然后分配。

长度:

int len = strlen(input_string);

分配内存

char *p = malloc (sizeof(char) * len + 1) ;

然后保存

strcpy (p, input_string);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2021-02-15
    • 2013-07-01
    相关资源
    最近更新 更多