[收藏]C++ Tips(2)--new,delete - 心如止水--coofucoo的专栏
来源:百度文库 编辑:神马文学网 时间:2024/10/03 02:38:15
[收藏]C++ Tips(2)--new,delete
/*这一系列文章《C++ Tips》是公司Code Committee专家会推荐工程师看的,感觉很好,拿出来与大家共同提高。并不是知道多少会使人与人产生差别,真正的差别在于你能做到多少。
--coofucoo
*/
Code Committee专家会关注内存分配的使用:
1 建议new,delete,而不是malloc,free
2 new要判断返回值,经常成功不代表一定成功
3 delete指针后尽量赋值NULL
我们先看一下下面的这段程序,有这么一个程序段:
class A
{
public:
A() { cout<<"A is here!"<~A(){ cout<<"A is dead!"<private:
int i;
};
A* pA=new A;
delete pA;
实际上,这段程序里面隐含调用了一些我们没有看到的东西, 在这个简单的程序段里面,new/delete究竟做了些什么?那就是:
static void* operator new(size_t sz);
static void operator delete(void* p);
这就是new可以申请很多种类型变量空间的原因。
new A;实际上做了2件事:调用opeator new,在自由存储区分配一个sizeof(A)大小的内存空间;然后调用构造函数A()。,在这块内存空间上类砖砌瓦,建造起我们的对象。同样对于delete,则做了相反的两件事:调用析构函数~A(),销毁对象,调用operator delete,释放内存。
运算符new和delete提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new比使用malloc()有以下的几个优点:
1、new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。
2、它自动地返回正确的指针类型,不用进行强制指针类型转换。
3、可以用new对分配的对象进行初始化。
不过需要注意的是,new分配一块内存的时候,并没有对这块内存空间做清零等任何动作,delete同样。
本文引用通告地址: http://blog.csdn.net/coofucoo/services/trackbacks/480983.aspx
[点击此处收藏本文]
发表于 2005年09月14日 11:15 PM
/*这一系列文章《C++ Tips》是公司Code Committee专家会推荐工程师看的,感觉很好,拿出来与大家共同提高。并不是知道多少会使人与人产生差别,真正的差别在于你能做到多少。
--coofucoo
*/
Code Committee专家会关注内存分配的使用:
1 建议new,delete,而不是malloc,free
2 new要判断返回值,经常成功不代表一定成功
3 delete指针后尽量赋值NULL
我们先看一下下面的这段程序,有这么一个程序段:
class A
{
public:
A() { cout<<"A is here!"<
int i;
};
A* pA=new A;
delete pA;
实际上,这段程序里面隐含调用了一些我们没有看到的东西, 在这个简单的程序段里面,new/delete究竟做了些什么?那就是:
static void* operator new(size_t sz);
static void operator delete(void* p);
这就是new可以申请很多种类型变量空间的原因。
new A;实际上做了2件事:调用opeator new,在自由存储区分配一个sizeof(A)大小的内存空间;然后调用构造函数A()。,在这块内存空间上类砖砌瓦,建造起我们的对象。同样对于delete,则做了相反的两件事:调用析构函数~A(),销毁对象,调用operator delete,释放内存。
运算符new和delete提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new比使用malloc()有以下的几个优点:
1、new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。
2、它自动地返回正确的指针类型,不用进行强制指针类型转换。
3、可以用new对分配的对象进行初始化。
不过需要注意的是,new分配一块内存的时候,并没有对这块内存空间做清零等任何动作,delete同样。
本文引用通告地址: http://blog.csdn.net/coofucoo/services/trackbacks/480983.aspx
[点击此处收藏本文]
发表于 2005年09月14日 11:15 PM
[收藏]C++ Tips(2)--new,delete - 心如止水--coofucoo的专栏
[收藏]C++ Tips(2)--new,delete - 心如止水--coofucoo的专栏
关于new和delete,new[] 和delete[] - phymelinda的专栏 ...
什么是SWOT分析法? - 心如止水--coofucoo的专栏 - CSDN博客
过程培养习惯,习惯改变命运(0510/11) - 心如止水--coofucoo的专栏
麦家专栏:心如止水的兔子
[收藏]C++ Tips(2)
C++中new和delete导致的内存分配问题详解
C++代码优化Tips
C armman的专栏 - CSDNBlog
关于new/delete 与free/malloc,指针与引用
心如止水
心如止水
心如止水
心如止水
心如止水
对象析构谈—— delete this 的使用及注意事项 - 永争一流是我的信仰! - C...
对象析构谈—— delete this 的使用及注意事项 - 永争一流是我的信仰! - C...
c代码优化方案 - quanming1119的专栏
做个心如止水的校长
值得收藏的药方C
c值得收藏的宝库
经典的C 库 - xlvector的专栏 - CSDNBlog
C语言宏的学习: - henry19850318的专栏 - CSDN博客