gpt4 book ai didi

c - 你怎么知道用 malloc() 分配多少空间?

转载 作者:太空狗 更新时间:2023-10-29 16:46:00 25 4
gpt4 key购买 nike

我是一个 C 新手,我来自 C#。我一直在学习内存管理和 malloc() 函数。我也遇到过这段代码:

char *a_persons_name = malloc(sizeof(char) + 2);

我不明白这是为 a_persons_name 分配了多少空间。是分配 2 个字符(例如 AB)还是其他?

我也知道您有时可以通过 malloc 获得“幸运”并使用未分配的空间(这可能导致数据损坏和段错误)。那么我如何知道我分配了多少空间以及我需要多少空间?

最佳答案

该代码段为 2 个字符的名称分配了足够的空间。

通常,字符串缓冲区将从某个地方填充,即 I/O。如果事先不知道字符串的大小(例如从文件或键盘读取),通常使用以下三种方法之一:

  • 为任何给定的字符串定义最大大小,分配该大小 + 1(对于空终止符),最多读取该数量的字符,如果提供的字符过多则出错或盲目截断。不是非常用户友好。

  • 分阶段重新分配(最好使用几何级数,例如加倍,以避免二次行为),并继续阅读直到到达终点。编码不是很容易。

  • 分配一个固定的大小并希望它不会被超过,并且当这个假设失败时可怕地崩溃(或被拥有)。易于编码,易于破解。例如,请参阅标准 C 库中的 gets。 (切勿使用此功能。)

关于c - 你怎么知道用 malloc() 分配多少空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1247964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com