- 博客(5)
- 收藏
- 关注
转载 C++程序的内存格局通常分为哪几个区
一、五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放...
2018-06-19 09:49:31 3749
转载 C++11中智能指针的原理、使用、实现
目录理解智能指针的原理智能指针的使用智能指针的设计和实现1.智能指针的作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使用智能指针能更...
2018-06-17 08:25:44 140
转载 C++多态相关整理
一、C++多态的实现原理 多态性是一个接口多种实现,是面向对象的核心。分为静态多态和动态多态。静态多态是指通过模板技术或者函数重载技术实现的多态,其在编译器确定行为。动态多态是指通过虚函数技术实现在运行期动态绑定的技术。1)静态多态 静态多态是通过重载和模板技术实现,在编译的时候确定。函数重载技术利用参数的不同确定调用关系,函数模版技术利用类型的不同生成不同的执行...
2018-06-14 15:00:59 236
原创 new和malloc的区别 整理
0 属性 new/delete是C++关键字(操作符),需要编译器支持。malloc/free是库函数,需要头文件支持。1 参数 使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据数据类型信息自行计算,如’int * a = new。而malloc则需要显式地指出所需内存的尺寸,如’int * a = malloc(sizeof(int))’;。2 返回类型...
2018-06-11 10:22:00 124
原创 如何理解const char*, char const*, char*const等
1.实际上只分const在*左,还是const在*右 const在*左,则p可变,*p反之;const在*右,则p是const,*p反之 详细的说:const修饰时即可放在被修饰对象前也可放在被修饰对象后。所以关键看哪个对象离const近。 const char *p 明显可以看出const离char 近,故修饰的是char 所以定义的是一个指向const char 的指...
2018-06-06 14:12:05 950
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人