帧和堆的区别

使用帧分配为数组分配内存:

{

const int BUFF_SIZE = 128;

// 在帧上分配数组空间

char myCharArray[BUFF_SIZE];

int myIntArray[BUFF_SIZE];

// 所分配的空间在超出作用域时自动回收

}

使用堆分配为数组分配内存:

const int BUFF_SIZE = 128;

// 在堆上分配数组空间

char* myCharArray = new char[BUFF_SIZE];

int* myIntArray = new int[BUFF_SIZE];

...

delete [] myCharArray;

delete [] myIntArray;

使用帧分配为结构分配内存:

struct MyStructType { int topScore;};

void SomeFunc(void)

{

// 帧分配

MyStructType myStruct;

// 使用该结构

myStruct.topScore = 297;

// 在超出作用域时结构所占用的内存被自动回收

}

使用堆分配为结构分配内存:

// 堆分配

MyStructType* myStruct = new MyStructType;

// 通过指针使用该结构

myStruct->topScore = 297;

delete myStruct;

使用帧分配为对象分配内存:

{

CMyClass myClass; // 构造函数被自动调用

myClass.SomeMemberFunction(); // 使用该对象

}

使用堆分配为对象分配内存:

// 自动调用构造函数

CMyClass *myClass=new CMyClass;

myClass->SomeMemberFunction(); // 使用该对象

delete myClass; // 在使用delete的过程中调用析构函数

上一篇: 在debian 上安装kvm 虚拟机   下一篇: debian 下用pptp client建立VPN链接

提交疑问

回顶部