什么是c内存管理的好比喻?

Mic*_*nen 4 c memory-management

我试图找到一个很好的比喻来解释内存分配,初始化和释放到非技术受众.我听说过邮政服务的使用方式很好地讨论了传递参考/价值,但对于分配/解除分配却没有那么多.
因此,我认为使用租用空间的想法可能有用,但我想知道SO工作人员是否可以提供更好的东西.

Eri*_*sen 14

你可能会使用许多隐喻.物业租赁等问题是承租人通常会选择空间.在这种情况下,操作系统负责选择足够大小的连续物理空间.它更像是一家酒店.您可以申请所需的大小房间,酒店工作人员将为您指定一个空房,并且至少与您要求的房间一样大(malloc).他们为您提供两件事:地址(您的房间号码)和访问该房间的权限(密钥).然后由您决定何时退房并退还钥匙(free在房间的上方).之后,酒店可以将房间分配给其他人.

  • 此外,如果您在没有归还钥匙的情况下离开("自由空间"),那么酒店将无法将该房间用于其他任何人.如果足够的客户这样做,酒店将不得不关闭 - 或者,就您的程序而言,它将泄漏内存,直到它不再能够运行. (4认同)
  • 在不释放的情况下放下指针就像丢失钥匙而不是将其交还给员工.引用已经释放的记忆就像是在你退房后回到你的房间.... @ fbrereto:好的电话 - 你打败了我. (3认同)
  • 需要注意的是,这家酒店也不提供客房清洁服务。办理入住时,您的房间可能会很乱(没有归零)。 (2认同)