首页 > 编程语言 > 详细

C语言内存管理

时间:2015-12-13 16:51:28      阅读:262      评论:0      收藏:0      [点我收藏+]

堆内存 heap 手动管理  (new copy)

栈内存 stack 系统自动管理

//
//  main.m
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
     //1.C语言内存管理
        char *str;
        str = (char*)malloc(100*sizeof(char)); //heap 堆内存里面申请空间
        //数组
        free(str);//释放内存
        //calloc realloc
        //2.C++
     //   Person p1;//stack 栈内存里面 自动管理
        Person *p2 = new Person(); //new 在heap堆内存里面
        delete p2;//手动释放
        
    }
    return 0;
}
//
//  Person.cpp


#include "Person.h"
void Person::showMsg(){
   
    cout<<"dwadaw"<<endl;
    
}
//
//  Person.h

#ifndef Person_h
#define Person_h

#include <stdio.h>
#include <iostream>
using namespace std;
class Person{
public:
    void showMsg();
    Person(){
        cout<<"我是构造函数"<<endl; 
    }
    ~Person(){
        cout<<"我是析造函数"<<endl;
    }
};


#endif /* Person_hpp */
在对象被创建的时候就会调用构造函数,比如 声明一个类class A{...},当你在main函数中
A a ; 定义一个对象a的时候, 就调用构造函数,默认构造函数都是无参数的 ,构造函数就相当给对象a初始化而已,

析构函数在下边3种情况时被调用:
1.对象生命周期结束,被销毁时;
2.delete指向对象的指针时,或delete指向对象的基类类型指针,而其基类虚构函数是虚函数时;
3.对象i是对象o的成员,o的析构函数被调用时,对象i的析构函数也被调用。

 

C语言内存管理

原文:http://www.cnblogs.com/WJR12/p/5042891.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!