C++学习笔记(动态内存)
很多时候,您无法提前预知需要多少内存来存储某个定义变量中的特定信息,所需内存的大小需要在运行时才能确定。
double* pvalue = NULL; // 初始化为 null 的指针
pvalue = new double; // 为变量请求内存
delete pvalue; // 释放 pvalue 所指向的内存
如果自由存储区已被用完,可能无法成功分配内存。所以建议检查 new 运算符是否返回 NULL 指针,并采取以下适当的操作:(巨坑啊 让我联想到Java中NullPoint)
double* pvalue = NULL;
if( !(pvalue = new double ))
{
cout << "Error: out of memory." <<endl;
exit(1);
}
数组的动态内存分配:
char* pvalue = NULL; // 初始化为 null 的指针
pvalue = new char[20]; // 为变量请求内存
delete [] pvalue; // 删除 pvalue 所指向的数组
对象的动态内存分配:
#include <iostream>
using namespace std;
class Box
{
public:
Box() {
cout << "调用构造函数!" <<endl;
}
~Box() {
cout << "调用析构函数!" <<endl; //析构函数
}
};
int main( )
{
Box* myBoxArray = new Box[4];//这种写法看的蛋疼啊 创建4个Box对象
delete [] myBoxArray; // Delete array 也会调用4次析构函数
return 0;
}
learn and copy from:
网友评论