存储时长、生命周期与可见性
在编程中,理解对象的存储时长、生命周期和可见性是非常重要的,它们直接影响着程序的正确性和性能。下面我们将详细探讨这些概念。
1. 动态分配的一致性
在进行动态内存分配时,调用malloc、realloc和free等分配函数应该成对出现。这不一定需要在同一个函数内完成,但在大多数情况下,简单统计它们的调用次数应该相等。
-规则 1:每一次分配都必须有一次释放:如果不这样做,可能会导致内存泄漏,即已分配的对象丢失,这可能会使平台资源耗尽,表现为性能下降或随机崩溃。
-规则 2:每一次释放都必须对应一次malloc、calloc、aligned_alloc或realloc:需要注意的是,realloc可能会使分配次数的统计变得复杂,因为当它使用现有对象调用时,它同时起到了释放旧对象和分配新对象的作用。
-规则 3:只能使用malloc、calloc、aligned_alloc或realloc返回的指针调用free:指针不能指向通过其他方式分配的对象(如变量或复合字面量),不能已经被释放过,也不能