【发布时间】:2017-08-28 06:20:27
【问题描述】:
使用calloc(x, y) 可以在C 中安全地分配x 大小为y 的元素,calloc() 将负责乘法x*y。
但是,例如 realloc() 仅将新大小作为参数,我想知道如何使用 realloc() 安全地重新分配 x*y 字节。
如果x*y 不适合size_t 怎么办? calloc() 是如何处理这个问题的?
【问题讨论】:
-
只是一个想法:如果您需要担心分配大小的溢出,您可能需要将算法分解为更小的子部分?
-
@SouravGhosh 这是供其他人使用的数据类型库的一部分,他们只需要提供元素大小和要存储的元素数量。如何使用
realloc安全地执行此操作(我已经有一些内存 - 所以calloc不是一个选项)? -
如果你的算法需要超过 4GB 的内存,那么问题就很严重了 :D
-
@tilz0R 这用于数据类型。我关心溢出有什么问题?
-
你没毛病,提一下吧:)
标签: c memory-management malloc realloc calloc