C++学习笔记(二)
创始人
2024-05-23 18:45:16

带指针的类(eg. string.h)

只要类带指针一定要自己写拷贝构造函数和拷贝复制函数。 

拷贝构造,拷贝赋值,析构

拷贝构造函数:

string s1();
string s2("hello");string s3(s1);//拷贝构造
cout<

拷贝幅值函数:

如果没有检测自我赋值可能会导致结果出错,不仅仅只是效率高低的问题(因为赋值的第一件事是将待赋值指针delete)。

s3 = s2;//拷贝赋值
cout<

如果做了动态分配,那么结束之前需要调用析构函数释放内存,否则可能会导致内存泄露。

堆、栈与内存管理

栈是存在某作用域的一块内存空间,调用函数,函数本身会形成一个stack用来放置所接受的参数,返回地址,区域对象。

其生命在作用于结束之后结束,会被自动清理。

静态对象生命会知道整个程序结束。 

 全局对象的作用域也是整个程序。

堆是由操作系统提供的全局内存空间。

 需要delete,因为当作用于结束后,对象仍然存在,会产生内存泄露(没机会delete)。

new : 先分配内存(malloc)在调用拷贝构造。

delete : 先调用析构函数,再释放内存(free)。

new char[] 需要搭配 delete[],否则会因为未调用足够次数的析构函数导致内存泄露。

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...