您的位置:首页 > 编程语言 > C语言/C++

Visual C++ 2005 系列课程学习笔记-3

2008-09-04 03:27 260 查看
Visual C++ 2005中与C++的对比(内存的开辟、销毁)

Visual C++ 2005

value class Myclass //值类型

{

private:

m_member;

public:

void method(void);

}

{

Myclass classObject; //在栈中为新建的对象实例classObject开辟一块内存

Myclass^ classPtr = gcnew Myclass(); //在托管堆中为classPtr所指的对象实例开辟一块内存

classPtr = &classObject; //利用&将classObject对象的地址赋给classPtr

delete classPtr; //调用析构函数来释放非托管资源

} //遇到封闭的大括号时会自动调用析构函数来释放确定性资源并销毁为classObject开辟的内存

// 托管堆中classPtr所指对象的内存会由垃圾回收器自动处理

ref class Myclass //引用类型

{

private:

m_member;

public:

void method(void);

}

{

Myclass classObject; //在托管堆中为新建的对象实例classObject开辟一块内存

Myclass^ classPtr = gcnew Myclass(); //在托管堆中为classPtr所指的对象实例开辟一块内存

classPtr = %classObject; //利用%将classObject对象的地址赋给classPtr

delete classPtr; //调用析构函数来释放非托管资源

} //遇到封闭的大括号时会自动调用析构函数来释放确定性资源

//托管堆中classObject所占内存、classPtr所指对象的内存会由垃圾回收器自动处理

C++:

class Myclass //标准的C++本地类

{

private:

m_member;

public:

void method(void);

}

{

Myclass classObject; //在栈中为新建的对象实例classObject开辟一块内存

} //遇到大括号时会自动调用析构函数来释放确定性资源//并销毁为classObject开辟的内存

Myclass* classPtr = new Myclass(); //在本地堆中为classPtr所指的对象实例开辟一块内存

classPtr = &classObject; //利用&将classObject对象的地址赋给classPtr

delete classPtr; //调用析构函数来释放资源并销毁为classPtr所指的对象实例开辟的内存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: