【发布时间】:2014-03-26 01:21:13
【问题描述】:
当您为内存分配空间时,如何判断是否需要为其分配更多空间?是否有一个检查或者您可以对您的新内存进行检查以确保它运行良好? (为结构分配内存)。
因为我在想一个结构是一组数据,即使我经常传递它,它也不应该比结构的大小正确吗?
【问题讨论】:
-
不清楚你在问什么。您是在谈论使用
malloc为单个结构对象分配空间吗?struct foo *ptr = malloc(sizeof *ptr);是否解决了您正在尝试做的事情? -
malloc(sizeof(struct T)) 总是为一个 struct T 中的数据分配足够的空间。不多也不少。无需检查。如果“系统内存”,即堆不足以允许保留那么多内存 malloc 将返回 NULL,应该检查。
-
是的 malloc 和 @PeterSchneider 我的代码开始变得越来越慢所以我想知道是不是因为我的堆上的结构太长了?
-
当然,如果您分配 GBytes 的数据,您可能会看到您的机器开始将未使用的内存交换到磁盘,以便为分配释放 RAM。但这必须是大量的分配。当不再需要内存时,最好释放()内存。