C/C++
seuStones
Java架构
展开
-
C/C++·函数指针
函数指针简介及示例原创 2017-07-03 15:00:57 · 301 阅读 · 0 评论 -
C++·内存泄露以及常见的解决方法
1.什么是内存泄漏(memory leak)?指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。 2.对于C和C++这种没有Garbage Collection 的语言来讲,我们主要关注两种类型的内存泄漏:堆内存泄漏(Heap leak)。对内存指的是程...转载 2018-07-19 17:42:27 · 2986 阅读 · 0 评论 -
C++·计算结构体大小
结构体中可以定义的数据类型: 1. 基本类型 2. 上面已经出现过的数据类型,比如说上面已经定义过的结构体 3. 指向自己的指针由于内存对齐的问题,各个数据类型放的位置不同就会导致结构体的大小不一样。偏移量:结构体中的偏移量就是结构体成员和结构体变量的地址之差,比如说第一个结构体成员的偏移量就是0,第二个结构成员的偏移量就是第一个结构体成员的大小,假如第一个成员的是int b;那么第...转载 2018-07-19 17:00:17 · 3270 阅读 · 1 评论 -
Effective C++ 阅读笔记·Implementations
太快定义变量可能造成效率上的拖延;过度使用转型(casts)可能导致代码变慢又难维护,又招来微妙难解的错误;返回对象“内部数据之号码牌(handles)”可能会破坏封装并留给客户虚吊号码牌(dangling handles);未考虑异常带来的冲击则可能导致资源泄露和数据败坏;过度热心地inlining可能引起代码膨胀;过度耦合(coupling)则可能导致让人不满意的冗长建置时间(build...原创 2018-07-06 10:27:33 · 160 阅读 · 0 评论 -
Effective C++ 阅读笔记·Designs and Declarations
所谓软件设计,是“令软件做出你希望它做的事情”的步骤和做法,通常以颇为一般性的构想开始,最终演变成十足的细节,以允许特殊接口(interfaces)的开发。这些接口而后必须转换为C++声明式18 Make interfaces easy to use correctly and hard to use incorrectlytr1::shared_ptr缺省的删除器来自“tr...原创 2018-07-05 22:35:16 · 152 阅读 · 0 评论 -
Effective C++ 阅读笔记·Resource Management
“所谓资源就是,一旦用了它,将来必须还给系统。如果不是这样,糟糕的事情会发生。C++程序中最常使用的资源就是动态分配内存(如果你分配内存却从来不曾归还它,会导致内存泄漏),但内存只是你必须管理的众多资源之一。其他常见的资源还包括问见面暑期(file descriptors)、互斥锁(mutex locks)、图形界面中的字型和笔刷、数据库连接、以及网络sockets。不论哪一种资源,重要的是...原创 2018-07-04 22:49:49 · 158 阅读 · 0 评论 -
Effective C++ 阅读笔记·Miscellany
53 Pay attention to compiler warning严肃对待编译器发出的警告信息;不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同。一旦移植到另一个编译器上,你原本依赖的警告信息有可能消失;54 Familiarize yourself with the standard library, including TR1TR1的内涵包括智...原创 2018-07-11 10:13:14 · 175 阅读 · 0 评论 -
Effective C++ 阅读笔记·Customizing new and delete
operator new 和 operator delete只适合用来分配单一对象。Array所用的内存由operator new[] 分配出来,并由operator delete[] 归还。STL容器所使用的heap内存是由容器所拥有的分配器对象管理,不是被new和delete直接管理。49 Understand the behavior of the new-handler...原创 2018-07-10 22:56:44 · 130 阅读 · 0 评论 -
Effective C++ 阅读笔记·Constructors, Destructors, and Assignment Operators
05 Know what functions C++ silently writes and calls定义一个类,编译器会为它声明一个copy构造函数,一个copy assignment操作符和一个析构函数;如果自己没有声明任何构造函数,编译器就会声明一个默认构造函数;所有这些函数都是public且inline;//定义一个空类:class Empty{};//相当于如下定义...原创 2018-07-03 22:30:44 · 177 阅读 · 0 评论 -
Effective C++ 阅读笔记·Templates and Generic Programming
Templates 及泛型编程的世界,与面向对象有根本上的不同。在此世界中显示接口和运行期多态仍然存在,但重要性低;隐式接口和编译器多态更为重要。41 Understand implicit interfaces and compile-time polymorphism加诸于template参数身上的隐式接口,就像加诸于class对象身上的显式接口一样真实,而且两者都在编译器完...原创 2018-07-10 16:13:14 · 149 阅读 · 0 评论 -
Effective C++ 阅读笔记·Accustoming Yourself to C++
01 View C++ as a federation of languages    C++四大组成部分:C;Object-Oriented C++;Template C++;STL;02 Perfer consts, enum, and inlines to #definesclass内常量已在声明时设置初值,则在定义时不可以...原创 2018-07-03 16:26:51 · 183 阅读 · 0 评论 -
Effective C++ 阅读笔记·Inheritance and Object-Oriented Design
32 Make sure public inheritance models “is-a”“public继承”意味着is-a。适用于base classes身上的每一件事情一定也适用于derived classes身上,以为每一个derived class对象也都是一个base class对象。33 Avoid hiding inherited names如果继承base c...原创 2018-07-09 23:13:35 · 182 阅读 · 0 评论 -
C++·STL相关
各种容器的元素在内存中的储存方式1、vector(向量):相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组。在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定,这个大小即capacity()函数的返回值。当存储的数据超过分配的空...转载 2018-07-19 20:57:37 · 131 阅读 · 0 评论