【C/C++】
小呀小二笙
斯人若彩虹,遇上方知有~~~
展开
-
浅拷贝与深拷贝
浅拷贝与深拷贝概述简单来说,浅拷贝就是在有指针的情况下,拷贝该指针,得到的新指针与原指针指向同一块内存;而深拷贝就是拷贝该指针,并申请一块新内存,使得新指针指向该新内存采用深拷贝时不会出现在浅拷贝时重复释放指针造成内存泄漏的情况!!!简单说明浅拷贝与深拷贝如果用户未定义拷贝构造函数,则编译器会默认合成一个拷贝拷贝函数来完成构造(之后将在C++对象模型的学习中深入了解)以一个简单的例子...原创 2018-12-06 20:26:12 · 267 阅读 · 0 评论 -
数据库索引及引擎(Mysql)
1.什么是索引?在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。A)索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。B)对于非聚集索引,有些查询甚至可以不访问数据页。C)聚集索引可以避免数据插入操作集中于表的最后一个数据页。D)一些情况下,索引还可用于避免排序操作。当然,众...转载 2019-04-23 22:41:59 · 351 阅读 · 0 评论 -
构造函数与析构函数能否为虚函数?
C++C++C++:构造函数和析构函数能否为虚函数?简单回答是:构造函数不能为虚函数,而析构函数可以且常常是虚函数。1.构造函数不能为虚函数让我们来看看大牛C++C++C++之父 BjarneBjarneBjarne StroustrupStroustrupStroustrup 在《TheTheThe C++C++C++ ProgrammingProgrammingProgramming L...转载 2019-04-23 20:19:16 · 697 阅读 · 0 评论 -
C++内存泄漏
1. 内存泄漏内存泄漏:指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。2.内存泄漏危害最直接的危害就是系统内存耗尽,系统死机。内存泄漏是最难发现的常见错误之一,因为除非用完内存或调用mallocmallocmalloc失败,否则都不会导致任何问题。如果程序运行...转载 2019-04-23 19:40:10 · 383 阅读 · 0 评论 -
C++中指针和引用的区别
★ 相同点:1.都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。★ 区别:1.指针是一个实体,而引用仅是个别名;2.引用使用时无需解引用(∗*∗),指针需要解引用;3.引用只能在定义时被初始化一次,之后不可变;指针可变;4.引用没有 constconstconst,指针有 const,constconst,constconst,const 的...转载 2019-04-23 17:24:33 · 350 阅读 · 0 评论 -
C++中delete与delete[]的区别
当调用deletedeletedelete的时候,系统会自动调用已分配的对象的析构函数。当我们用new[]new []new[] 分配的对象是基本数据类型时,用deletedeletedelete和delete[]delete []delete[] 没有区别。但是,当分配的对象是自定义对象时,二者不能通用。一般来说使用newnewnew分配的对象,用deletedeletedelete来释放。用n...原创 2019-04-23 16:58:00 · 821 阅读 · 0 评论 -
C++中函数模板与类模板、模板类与类模板、模板函数与函数模板的区别
1.函数模板与类模板的区别相同点:1.以关键字template开始,后跟一个模板参数列表2.两者定义的类型参数目的相同,都是将数据的类型参数化不同点:1.函数模板的实例化是由编译程序在处理函数调用时自动完成的;而类模板的实例化必须由程序员在程序中显式地指定。即函数模板允许隐式调用和显式调用,而类模板只能显示调用2.类模板——模板类(class template——templ...原创 2019-04-23 16:34:08 · 1504 阅读 · 0 评论 -
*** stack smashing detected ***: <unknown> terminated Aborted (core dumped)
今天在写一个简单TCP server的时候,出现了如下的错误:数据传输正常,但在结尾报了该错误,并引发了coredump,然后我的首先反应是调试该core dump(因为之前才了解如何用gdb调试coredump文件 gdb调试coredump),如下是我的调试结果:然后好像不太行(==哭唧唧 ==),然后又去找之前所写的出现coredump的原因:(1)内存访问越界 (2)多线程程序使用...原创 2018-12-24 20:21:46 · 19506 阅读 · 0 评论 -
【浅谈】编译与链接
文章目录1. 编译与链接2. 预处理3. 编译与汇编4. 链接4.1 静态链接4.2 动态链接4.3 静态链接库、动态链接库各自的特点1. 编译与链接编译与链接的过程可分解为四个步骤,分别是预处理、编译、汇编以及链接,可以用一张图来描述此过程:2. 预处理我们接下来都以示例来描述相应的过程以这样的一个示例:#include <iostream>using names...原创 2018-12-17 10:26:47 · 335 阅读 · 0 评论 -
【探索】vector的内存管理与效率
文章目录1. 使用reverse()函数提前设定容量大小1.1 提前设定的原因-1.2 提前设定的原因-|1.3 使用reverse的情况2. 修整vector过剩空间3. 用swap方法释放vector所占内存1. 使用reverse()函数提前设定容量大小1.1 提前设定的原因-对于vector和string,如果需要更多的内存空间,就会以类似realloc的思想来增长大小。vect...原创 2018-12-16 23:40:01 · 719 阅读 · 0 评论 -
对象的存储空间 || 虚析构函数
对象存储空间的探讨在实际了解对象的存储空间之前,相信大家也或多或少在某些地方看到过介绍有关一个对象的存储空间有多大,但有没有深入去了解关于一个对象为什么需要这么大的内存空间?到底是什么导致一个对象占了这么大的内存空间?让我们通过几个简单的例子来先了解一下一个对象所占用的内存空间简单test空类存储空间的计算:#include &lt;iostream&gt;using namesp...原创 2018-12-10 16:57:14 · 306 阅读 · 0 评论 -
结构体与共用体字节数计算
写在前面以前所了解的字节数计算,都想当然的以为将所有数据类型所占的字节数叠加即成了总的字节数,直到今天遇到了这一类问题才好好研究了一下,发现这里面竟有很多我不曾掌握的知识点,那么现在就来学习一下如何计算结构体与共用体、两者相互嵌套的字节数计算内存对齐首先在计算这两者的字节数之前,需要了解有关内存对齐,不然做题时容易不知所措内存对齐的原因1、平台原因(移植原因):不是所有的硬件平台都能...原创 2018-12-09 23:24:22 · 3745 阅读 · 4 评论 -
判断系统是大端还是小端
文章目录大端与小端判断大端、小端的三种方式直接观察变量的内存值强制转换:将&int转换为char*使用联合体union进行判断大端与小端大端模式:指数据的高字节保存在内存的低地址中,低字节保存在高地址中小端模式:指数据的高字节保存在内存的高地址中,低字节保存在低地址中判断大端、小端的三种方式直接观察变量的内存值#include <iostream>using na...原创 2018-12-09 17:49:16 · 2648 阅读 · 0 评论 -
【面试】单链表排序,时间复杂度O(nlogn)、空间复杂度O(1)
(1)如果不要求空间复杂度,则可以将链表元素存至vectorvectorvector,排序后将其化为链表#include <iostream>#include <vector>#include <algorithm>using namespace std;struct ListNode { int val; ListNode* next...原创 2019-09-23 09:36:43 · 2950 阅读 · 0 评论