`

内存计数基础原理

    博客分类:
  • IOS
 
阅读更多

 

有new、alloc、copy(计数器加一),就得release(计数器减一)

 

 

//
//  Person.h
//  a1
//
//  Created by mahongmin on 14-4-21.
//  Copyright (c) 2014年 mahongmin. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Book.h"

@interface Person : NSObject
{
    Book *_book;
}

- (void) setBook:(Book*)book;
- (Book*) book;

@end



================


//
//  Person.m
//  a1
//
//  Created by mahongmin on 14-4-21.
//  Copyright (c) 2014年 mahongmin. All rights reserved.
//

#import "Person.h"

@implementation Person


- (void) setBook:(Book*)book
{
    if (book != _book)// 防止p.book = b; 再来一次p.book = b
    {
        [_book release];// 此场景:如果p.book = b1,然后p.book = b2 那么,就需要此行来把b1 release掉。
        
        _book = [book retain];// book传递进来,那么等于Person对book进行了一次占用 内存占用+1
    }
}

- (Book*) book
{
    return _book;
}

-(void)dealloc
{
    // 当销毁人的时候,需把人占用的book也销毁
    [_book release];
    
    NSLog(@"释放人对象");
    [super dealloc];
}

@end
======================
//
//  Book.h
//  a1
//
//  Created by mahongmin on 14-4-23.
//  Copyright (c) 2014年 mahongmin. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Book : NSObject

@end


===========================
//
//  Book.m
//  a1
//
//  Created by mahongmin on 14-4-23.
//  Copyright (c) 2014年 mahongmin. All rights reserved.
//

#import "Book.h"

@implementation Book

- (void) dealloc
{
    NSLog(@"释放book对象");
    [super dealloc];
}

@end


====================================
//
//  main.m
//  a1
//
//  Created by mahongmin on 14-4-21.
//  Copyright (c) 2014年 mahongmin. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Book.h"

int main(int argc, const char * argv[])
{
    Person *p = [[Person alloc] init];
    
    Book *b = [[Book alloc] init];
    
    p.book = b;//此时,b指针指向的Book,计数为2
    
    [b release];
    b = nil;
    [p release];// 如果多次乱调[r release],写了p=nil后,此处不会再报EXC_BAD_ACCESS野指针错误。此时p为空对象,给空对象发送消息,不会产生空指针错误。跟java不一样
    p = nil;
    return 0;
}

 

 

分享到:
评论

相关推荐

    python内存管理机制原理详解

    引用计数是最基础的内存管理策略,它简单地记录每个对象被引用的次数。当对象创建时,它的引用计数初始化为1。每当有一个新的引用指向这个对象,引用计数加1;当一个引用失效,计数减1。当对象的引用计数变为0时,...

    JVM初探内存分配GC原理与垃圾收集器共16页.pdf.z

    深入理解JVM内存分配、垃圾收集(Garbage Collection, GC)原理以及垃圾收集器的工作方式对于优化程序性能至关重要。 首先,我们要了解JVM内存结构。在Java中,内存主要分为以下几个区域: 1. **堆内存(Heap)**...

    COM学习——动态绑定之引用计数

    3. 引用计数原理:理解引用计数如何影响对象生命周期,以及AddRef和Release的正确使用。 4. CoCreateInstance函数:学习如何使用这个函数来创建COM对象。 5. QueryInterface方法:理解如何通过该方法获取对象的其他...

    内存智能释放超级好用

    内存管理是计算机操作系统中的...总结来说,内存智能释放是现代软件开发中不可或缺的一部分,它涉及到内存管理的基础原理、内存泄漏的防范以及各种优化策略。理解和掌握这些知识点,有助于编写出更加高效、稳定的程序。

    Proteus(8.9版本) 8086CPU+微机原理-0.1s-计数表 模式1-仿真

    《Proteus 8.9 8086CPU与微机原理:0.1s计数表模式1仿真解析》 在IT领域,尤其是在嵌入式系统设计和微控制器应用中,理解微机原理和8086CPU的工作机制至关重要。Proteus是一款强大的电子设计自动化软件,它为工程师...

    单片机原理、接口及应用 嵌入式系统技术基础 全套课件

    单片机原理、接口及应用是嵌入式系统技术的基础,这一领域涵盖了广泛的知识点,主要涉及单片机的架构、指令系统、外围接口技术、程序设计等方面。本套课件由肖看编著,第二版,旨在深入浅出地讲解这些核心概念。 1....

    计算机基础原理与冯.诺依曼结构思想

    计算机基础原理是理解信息技术核心的基石,而冯·诺依曼结构则是现代计算机设计的核心理念。这篇文章详细介绍了从计算机的基本单位——字节和进制,到计算机硬件的组成,再到冯·诺依曼体系结构的基本思想,为初学者...

    内存协议PPT课件

    本章节主要介绍了内存管理的基础知识,包括内存管理的重要性和基本原理、对象的生命周期、引用计数机制以及自动释放池的工作原理。此外,还介绍了协议与代理模式的概念及其在实际项目中的应用。通过学习这些基础知识...

    内存管理内幕 pdf

    本文档详细介绍了内存管理的基础知识和技术细节,包括不同内存管理方法的选择、折衷及其实现。通过学习这份资料,读者将能够更好地理解和掌握内存管理的核心概念和技术,这对于编写高效且健壮的应用程序至关重要。 ...

    C++内存管理技术内幕【电子书】

    第一章介绍了内存管理的基本概念和原理。内存管理主要是指在程序运行过程中,对内存的分配、使用和回收进行控制。在C++中,内存管理主要通过操作符new和delete来实现动态内存的分配和释放。这一章节详细解释了这些...

    对射计数传感器源码.rar

    总的来说,“对射计数传感器源码.rar”提供了一个基础框架,开发者可以根据具体需求进行修改和扩展,以适应各种不同的应用,例如生产线的自动化、物体追踪、运动检测等。深入理解和运用这个源码,有助于提升我们在...

    ucos-ii内存分区变化

    1. **内存分区原理**:UCOS-II内存管理的核心是基于固定大小的内存块进行分配和回收。这些内存块被组织成一个个分区,每个分区中的内存块大小相同。这种设计有利于提高内存分配效率,尤其是在对小块内存需求频繁的...

    IOS 底层原理内存管理性能优化-课件

    学习OC语法包括理解消息传递机制、类和对象、属性、协议等概念,这些都是优化内存管理的基础。 2. **多线程**:在iOS应用中,多线程技术用于实现后台任务,提高用户体验。了解GCD(Grand Central Dispatch)、...

    详细描述了Object-C中的内存管理,超级简单

    尽管ARC简化了内存管理,理解底层的引用计数原理仍然是编写高效Objective-C程序的关键。这有助于开发者更有效地使用内存资源,避免潜在的性能瓶颈。 #### 内存管理示例 为了更好地理解Objective-C中的内存管理机制...

    微机原理与接口技术课后答案

    本章节主要介绍微机原理与接口技术的基础知识,包括计算机中的计数制、机器码和真值、数制转换、微型计算机的基本工作原理等。 1. 计算机中的计数制有哪些? 计算机中常用的计数制有二进制、八进制、十进制(BCD)...

    单片机基础 单片机概述 单片机工作原理

    本课程将深入探讨单片机的基础知识,包括其组成、硬件结构以及工作原理。 1. **单片机组成** 单片机主要由以下几个部分组成: - **微处理器(CPU)**:执行指令、控制整个系统的运算和控制。 - **存储器**:包括...

    单片机定时计数实验

    单片机定时计数实验是电子工程领域中的基础实践,主要应用于各种自动化设备、智能硬件以及嵌入式系统。在本实验中,我们将探讨如何利用单片机实现定时和计数功能,具体包括0-9的计数以及0-59的定时显示。 单片机,...

    完整版对内存进行读写操作1.0.rar

    总结,对内存进行读写操作是计算机系统中基础且关键的部分。理解内存的运作机制、掌握内存管理方法、了解内存优化策略以及防范内存安全问题,对于编写高效、安全的程序至关重要。通过不断学习和实践,你将能够更好地...

    单片机原理及应用实验报告(全).doc

    本文将详细介绍这门课程实验报告的七个部分,涵盖从基础的程序设计到复杂的应用开发的全过程。 在实验一中,我们学习了如何使用实验系统,并掌握了在KEIL软件环境中的仿真与调试技巧。实验的核心任务是编写一个计算...

    Python的内存管理机制.pdf

    Python的内存管理机制主要涉及以下几个方面:小整数对象池、intern机制、垃圾回收(引用计数、标记清除、分代回收)。 首先,小整数对象池是Python为提升程序性能而设计的一个优化机制。Python预分配了一个范围在[-...

Global site tag (gtag.js) - Google Analytics