
编程语言
米沙子418
不疯魔不成活。
展开
-
C++中深入理解dynamic_cast
dynamic_cast运算符的详解转载 2017-12-21 10:32:37 · 16196 阅读 · 1 评论 -
经典面试题之new和malloc的区别
转自:https://blog.youkuaiyun.com/nie19940803/article/details/76358673 new和malloc的区别是C/C++一道经典的面试题,我也遇到过几次,回答的都不是很好,今天特意整理了一下。0. 属性new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。1. 参数...转载 2018-08-04 14:05:33 · 140 阅读 · 0 评论 -
C/C++沉思-----多态时一定要将父类(基类)的析构函数定义为虚函数
转自:https://blog.youkuaiyun.com/qiurisuixiang/article/details/6926313 先来看一段代码: //test.cpp #include <iostream> using namespace std; class father { public: fa...转载 2018-08-04 14:31:37 · 493 阅读 · 0 评论 -
构造函数与析构函数中不调用虚函数
转自:https://blog.youkuaiyun.com/linpengbin/article/details/51560276本文参考《effective C++》第九条款在C++中,提倡不能在构造函数和析构函数中调用虚函数。这是为什么呢?首先,我们先回顾一下C++虚函数的作用。 虚函数的引入是c++运行时多态的体现,通过调用虚函数可以在运行程序时实现动态绑定,体现了面向对象编程多态的思想。...转载 2018-08-04 14:49:01 · 343 阅读 · 0 评论 -
C++:构造函数和析构函数能否为虚函数
转自:https://blog.youkuaiyun.com/xhz1234/article/details/6510568C++:构造函数和析构函数能否为虚函数?简单回答是:构造函数不能为虚函数,而析构函数可以且常常是虚函数。(1) 构造函数不能为虚函数让我们来看看大牛C++之父 Bjarne Stroustrup 在《The C++ Programming Language》里是怎么说的:...转载 2018-08-04 14:54:53 · 3967 阅读 · 0 评论 -
(推荐)智能指针boost::weak_ptr 详解
转自:https://blog.youkuaiyun.com/acs713/article/details/29175231【1】boost::weak_ptr简介boost::weak_ptr属于boost库,定义在namespace boost中,包含头文件 #include<boost/weak_ptr.hpp>便可以使用。【2】boost::weak_ptr详解智能指针bo...转载 2018-08-07 14:09:34 · 142 阅读 · 0 评论 -
Boost智能指针——shared_ptr
转自:https://blog.youkuaiyun.com/acs713/article/details/29175577boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法: #include...转载 2018-08-07 14:15:02 · 112 阅读 · 0 评论 -
C语言中Union类型的使用方法
转自:https://www.cnblogs.com/shirishiqi/p/5416935.html转自:http://blog.youkuaiyun.com/feimor/article/details/6858103使用C语言时,常常使用struct,对于union类型却几乎没有用过,只知道它是联合类型,各字段共享一块内存,实际应用中却不知道它的具体用途。今天读《编程卓越之道》中看到有对其...转载 2018-08-07 20:14:29 · 1788 阅读 · 0 评论 -
内存操作函数memmove,memcpy,memset
转自:https://blog.youkuaiyun.com/peiyao456/article/details通过字符串的学习,我们知道字符串操作函数的操作对象是字符串,并且它的结束标志是结束符\0,当然这个说的是不受限制的字符串函数。然而当我们想要将一段内存的数据复制到另一块内存时,我们不能使用字符串操作函数,当然也不能一个一个复制,所以就引入了内存操作函数。memcpy函数原型:vo...转载 2018-08-12 21:12:18 · 251 阅读 · 0 评论 -
Linux系统中“动态库”和“静态库”那点事儿
转自:https://blog.youkuaiyun.com/u010977122/article/details/52958330#commentBox今天忙着编译库文件,中间遇到不少问题,看到这篇文章不错,就转载过来了,后面我会整理下今天的问题,从网上下载了一个开源库,如何进行编译,如何加载到我们的工程中。 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻。在...转载 2018-08-24 16:08:49 · 259 阅读 · 0 评论 -
container of()函数简介
转自:https://blog.youkuaiyun.com/s2603898260/article/details/79371024 在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? 函数还可以这样定义??? 怎么还有0呢??? 哎,算了,还是放弃吧。。。)。 这就是...转载 2018-10-18 14:45:15 · 218 阅读 · 0 评论 -
C语言typeof详解
转自:https://www.cnblogs.com/likewithyou/p/5836551.html前言: typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛。一,说明 typeof的参数可以是两种形式:表达式或类型。 1,表达式的的例子: typeof(x[0](1) 这里假设x是一个函数指针数组,这...转载 2018-10-18 14:57:40 · 3004 阅读 · 0 评论 -
C语言特殊用法
转自:http://blog.chinaunix.net/uid-26352685-id-3706744.html c语言特殊语法(一)结构体赋值 c语言特殊语法(二)调试 c语言特殊语法(三)字节对齐c语言特殊语法(四)位域c语言特殊语法(五) __attribute__机制介绍 c语言特殊语法(六)typeof的用法 typeof是获取变量的类型。具体使用看看下面的代码你就懂了。...转载 2018-10-18 14:59:55 · 719 阅读 · 0 评论 -
ioctl的实现
转自:http://blog.chinaunix.net/uid-25014876-id-59419.html 一、ioctl的简介:虽然在文件操作结构体”struct file_operations”中有很多对应的设备操作函数,但是有些命令是实在找不到对应的操作函数。如CD-ROM的驱动,想要一个弹出光驱的操作,这种操作并不是所有的字符设备都需要的,所以文件操作结构体也不会有对应的函...转载 2018-10-19 10:35:54 · 310 阅读 · 0 评论 -
Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc的区别
转自:http://www.th7.cn/system/lin/201606/167750.shtml我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free()。注意:动态申请的内存使用完后必须要释放,否则会造成内存泄漏,如果内存泄漏发生在内核空间,则会造成系统崩溃。 那么,在内核空间中如何申请内存呢?一...转载 2018-10-22 10:02:47 · 145 阅读 · 0 评论 -
Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解
转自:https://www.aliyun.com/jiaocheng/1388801.html在LINUX的时钟中断中涉及至二个全局变量一个是xtime,它是timeval数据结构变量,另一个则是jiffies,首先看timeval结构struct timeval{ time_t tv_sec; /***second***/ susecond_t tv_usec;/***...转载 2018-10-26 11:21:07 · 759 阅读 · 0 评论 -
【转】C++内存布局(透彻易懂)
C++内存布局(上) https://blog.youkuaiyun.com/u012658346/article/details/50775742 C++内存布局(下) https://blog.youkuaiyun.com/u012658346/article/details/50775742转载 2018-08-04 14:01:41 · 1750 阅读 · 0 评论 -
C++ 四种强制类型转换(转)
转自:https://www.cnblogs.com/Allen-rg/p/6999360.htmlC++ 类型转换(C风格的强制转换):在C++基本的数据类型中,可以分为四类:整型,浮点型,字符型,布尔型。其中数值型包括 整型与浮点型;字符型即为char。(1)将浮点型数据赋值给整型变量时,舍弃其小数部分。(2)将整型数据赋值给浮点型变量时,数值不变,但是以指数形式存储。(3...转载 2018-07-20 10:28:58 · 1178 阅读 · 0 评论 -
有关 内存溢出、泄露、越界、缓冲区溢出、栈溢出
有关 内存溢出、泄露、越界、缓冲区溢出、栈溢出转载 2017-12-26 16:55:42 · 456 阅读 · 0 评论 -
c语言中static 函数和普通函数的区别?
转自:https://bbs.youkuaiyun.com/topics/350238100 C程序一直由下列部分组成:1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0...转载 2018-05-17 09:43:38 · 27937 阅读 · 1 评论 -
再议extern和include的作用
转自:http://www.cnblogs.com/zhangfeionline/p/5861721.html先引入一下题啊,主要是看到有人这样写 我个人觉的这样写没什么意思,没有体现出了extern的特性。 为什么我要这样说,先谈谈include,总是有人觉得这个东西很神秘,很特殊不知道他干了什么。其实它没有我们想象的那么神秘,它就是把包含的文件完全的放到当前文件展开。在什么时候展开那在预编译...转载 2018-05-17 10:19:37 · 1052 阅读 · 0 评论 -
C/C++ 编译器的命名粉碎规则(name mangling)和C/C++混合
转自:https://blog.youkuaiyun.com/yaoyutian/article/details/55209963在面向对象编程语言出现之前,如果你想要打印不同类型的数据,需要写多个方法 ,象是PrintInteger(int i),PrintString(string s) 和 PrintFloat(float f) 。也就是说, 你必须通过命名来区别行为和数据类型,因为 OOP语言出现前任...转载 2018-05-07 15:53:00 · 1313 阅读 · 0 评论 -
<string>与<string.h>以及<cstring>的区别
转载:https://blog.youkuaiyun.com/ZongYinHu/article/details/47144169在C++中,#include与#include的区别,前者要使用更新的编译器(其实大部分编译器多比较前卫了,出了有些搞嵌入式的用变态的编译器)。喔,原来iostream是C++的头文件,iostream.h是C的头文件,即标准的C++头文件没有.h扩展名,将以前的C的头转载 2018-04-29 22:24:31 · 937 阅读 · 0 评论 -
Linux系统编程——I/O多路复用select、poll、epoll的区别使用
转自:https://blog.youkuaiyun.com/tennysonsky/article/details/45745887I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用。select(),poll(),epoll()都是I/O多路复用的机制。I/O多路复用通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪...转载 2018-05-14 17:29:36 · 187 阅读 · 0 评论 -
高并发服务器编程之多进程并发服务器
转自:https://blog.youkuaiyun.com/apollon_krj/article/details/58174652 同类基础博客: 基于Linux的SOCKET编程之TCP半双工Client-Server聊天程序 基于Linux的Socket编程之TCP全双工Server-Client聊天程序 一、多进程并发分析:特点: 占用资源大,但是一个进程挂了不会...转载 2018-05-08 17:10:14 · 1290 阅读 · 0 评论 -
C++ 应用程序 内存结构 --- BSS段,数据段,代码段,堆内存和栈
转自:https://blog.youkuaiyun.com/klarclm/article/details/7742603ld 时把所有的目标文件的代码段组合成一个代码段,把所有的数据段组合成一个数据段.############################################################################BSS段:BSS段(bss segment)通常是指用...转载 2018-05-15 16:14:13 · 2695 阅读 · 0 评论 -
C++关键字static解析总结
转自:https://blog.youkuaiyun.com/shiwazone/article/details/45815615http://developer.51cto.com/art/201104/254141.htm(下文引用地址)要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,...转载 2018-05-16 10:02:36 · 157 阅读 · 0 评论 -
编译器在处理const变量跟一般变量时的区别
转自:https://www.cnblogs.com/TaigaCon/archive/2012/12/19/2824355.htmlconst变量,也就是常量,当某个变量加上const属性的时候,表明这个变量不可修改。 const变量是不可写的,那么我们对于const变量的处理只剩下读操作了。 当我们读一般的变量的时候,会先获取该变量的地址,然后到该地址去取数据,那么对于const变量的读操作是...转载 2018-05-16 12:19:52 · 1472 阅读 · 0 评论 -
#define和const的区别
转自:https://blog.youkuaiyun.com/yi_ming_he/article/details/70405364 这个区别用从几个角度来说:角度1: 就定义常量说的话: const 定义的常数是变量 也带类型, #define 定义的只是个常数 不带类型。角度2: 就起作用的阶段而言: define是在编译的预处理阶段起作用,而const是在 编译、运行的时...转载 2018-05-16 12:42:08 · 434 阅读 · 0 评论 -
C++ 自由存储区是否等价于堆?
转自:https://www.cnblogs.com/QG-whz/p/5060894.html阅读目录“free store” VS “heap”问题的来源结论参考资料 正文回到顶部“free store” VS “heap”当我问你C++的内存布局时,你大概会回答:“在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区”。如果我接着问你自由存储区与堆有什么区别,...转载 2018-05-16 13:03:59 · 354 阅读 · 0 评论 -
浅谈C++多态性
转自:https://blog.youkuaiyun.com/hackbuteer1/article/details/7475622 C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向...转载 2018-05-16 14:32:54 · 166 阅读 · 0 评论 -
C语言文件读写操作总结
转自:http://www.cnblogs.com/xiajun/archive/2010/08/14/2282881.htmlC语言文件操作一、标准文件的读写1.文件的打开fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。当使用打开函数时,必须给出文件名、文件操作方式(读...转载 2018-05-22 18:58:10 · 2417 阅读 · 0 评论 -
(转)指针free两次
https://www.colabug.com/1782146.html转载 2018-06-23 13:39:16 · 899 阅读 · 0 评论 -
linux下动态链接库(.so)的显式调用和隐式调用
转自:https://blog.youkuaiyun.com/lc_910927/article/details/42393121进入主题前,先看看两点预备知识。一、显式调用和隐式调用的区别 我们知道,动态库相比静态库的区别是:静态库是编译时就加载到可执行文件中的,而动态库是在程序运行时完成加载的,所以使用动态库的程序的体积要比使用静态库程序的体积小,并且使用动态库的程序在运行时必须...转载 2018-11-02 17:25:00 · 707 阅读 · 0 评论