xbwueric3
码龄14年
关注
提问 私信
  • 博客:13,386
    13,386
    总访问量
  • 26
    原创
  • 1,741,204
    排名
  • 1
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖南省
  • 加入CSDN时间: 2010-12-31
博客简介:

xbwueric3的博客

博客描述:
noob
查看详细资料
个人成就
  • 获得3次点赞
  • 内容获得0次评论
  • 获得17次收藏
创作历程
  • 12篇
    2018年
  • 16篇
    2017年
成就勋章
TA的专栏
  • C/C++
    22篇
  • 算法/数据结构
    1篇
  • linux内核
  • linux日常
    1篇
  • 操作系统
  • linux
    3篇
  • 网络编程
    2篇
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

局部变量内存分配时间、静态变量的初始化时间、常量折叠

例1 局部变量void Test1(){ ………… int buf[1024 * 1024]; …………}在windows下,由于栈限制为1M,上面代码可能会栈溢出,因此通过单步调试我们可以知道,局部变量是在进入函数时分配栈内存。编译器在编译的过程中,遇到函数调用时,会加入几条汇编指令。这些汇编指令的作用是: 1 分配一段栈空间,用于存放被调函数的参数...
原创
发布博客 2018.07.23 ·
2978 阅读 ·
3 点赞 ·
0 评论 ·
12 收藏

动态链接与静态链接

静态库Linux下的静态库通常以.a为后缀,用于创建.a的工具为ar(archive的缩写).静态库链接后会将所有数据会添加到调用程序, 因此使用静态库的程序体积可能较大,但是使用静态库的程序不需要外部依赖项.举例以hello.cpp、hello.h为例生成目标文件 g++ -c hell.c -o hello.o生成静态库 ar -crv libhello.a hel...
原创
发布博客 2018.07.16 ·
233 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C++ 对象的内存布局理解(棱形继承)

C++ 对象的内存布局理解以下是我看完陈皓的C++对象的内存布局后的一些理解普通继承单一继承(A->B, B->C) 虚函数表在最前面被重载的虚函数得到更新,未重载的虚函数按照声明和继承顺序排在后面数据成员在虚函数表后面,按照声明和继承顺序排在后面多重继承((A,B,C)->D) 每个父类都有自己的虚表,虚表后面是父类的数据成员,子类成员在所有父类内存布局...
原创
发布博客 2018.05.04 ·
250 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

成员函数内delete this

delete this以下引用自:http://www.cppblog.com/lovedday/archive/2008/06/03/52060.html 成员函数调用delete this合法吗? 只要你小心,一个对象请求自杀(delete this),是可以的。 以下是我对“小心”的定义: 你必须100%的确定,this对象是用 new分配的(不是用new[],...
原创
发布博客 2018.05.04 ·
340 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

TCP的7种定时器

转自:https://www.cnblogs.com/33debug/p/7060752.htmlutm_source=itdadao&utm_medium=referralTCP七种定时器超时重传定时器TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到还没有收到确认,就要重传这个报文段。持续计时器TCP 为每一个连接设有一个持续计...
转载
发布博客 2018.04.13 ·
221 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

select、poll、epoll浅析

select、poll、epoll浅析select概念接口int select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);writefds:”可写“状态的描述符集合readfds:”可读“状态的描述符集合exceptfds:”异常“状态...
原创
发布博客 2018.04.02 ·
142 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

IO模型

IO模型服务器编程中常用的4种IO模型:同步阻塞IO(Blocking IO)同步非阻塞IO(non-blocking IO)IO多路复用(IO Mutiplexing)异步IO(Asynchronous IO)同步和异步的概念描述的是用户线程与内核的交互方式:同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行;异步是指用户线程发起IO请求后...
原创
发布博客 2018.03.20 ·
221 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

可重入与线程安全

可重入与线程安全概念线程安全函数:函数可以同时被多个线程调用,并安全访问共享数据(各个线程有序访问)。可重入函数:函数可以同时被多个线程调用,但每个线程只能使用各自的数据。线程安全的类:每个线程使用这个类的相同的实例,成员函数也可以被每线程安全调用。可重入的类:每个线程使用这个类的不同的实例,成员函数就可以被每线程安全调用。可重入性 class Counte...
原创
发布博客 2018.03.15 ·
161 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[STL源码剖析]序列容器

序列容器Vector概念vector维护的迭代器有三个: start:目前使用空间的头end:目前使用空间的尾end_of_storage:目前可用空间的尾增加新元素时,如果超过当时的容量,则容量则会扩充2倍。扩充不是在原有空间上新增,而是需要重新配置、元素移动、释放原空间等过程。 当然,vector的每种实现都可以自由地选择自己的内存分配策略,分配多少内存取决于其...
原创
发布博客 2018.03.11 ·
200 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

[STL源码剖析]空间置配器allocator

空间置配器allocatorplacement new 与 newnew关键字操作:调用operator new为对象申请内存在申请到的内存地址上调用对象的构造函数返回对象的地址placement new的作用不是开辟新内存,是在指定内存块上构造对象。举例class A {...};class B {...};A* pa = new A;pa-&...
原创
发布博客 2018.03.09 ·
248 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

局部性原理

局部性原理时间局部性(Temporal Locality)如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。应用将某些数据在一段时间内集中处理,提高cache利用率空间局部性(Spatial Locality)在最近的将来将用到的信息很可能与现在正在使用的信息在空间地址上是临近的。应用数组逐行遍历效率比逐列遍历效率高,因为地址步进较小...
原创
发布博客 2018.02.14 ·
809 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

fork(),vfork(),写时复制(Copy-On-Write, COW)

fork()与写时复制(Copy-On-Write, COW)概念fork函数:返回子进程的pid给父进程:父进程没有函数可以获取所有子进程的pid。返回0给子进程:子进程可以通过getppid获取父进程的pid;而PID=0是内核交换进程,不可能是子进程,因此返回0作为标识,与父进程区分。COW技术:Linux的fork()使用写时复制技术,父子进程用的是相同的物...
原创
发布博客 2018.02.14 ·
428 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ubuntu日常问题

日常遇到的一些问题及解决方法,这里备个档。 基于 ubuntu 16.04ubuntu日常问题aptubuntu 16 使用 apt 替代 apt-get 和 apt-cache使用apt-get安装软件包时中途杀死进行后出错sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock虚拟机增...
原创
发布博客 2017.11.26 ·
329 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[effectiv c++]条款39:明智而审慎地使用private继承

class Timer {public: explicit Timer(int tickFrequency); virtual void onTick() const; ……};class Widget : private Timer {private: virtual void onTick() const; ……};private继承代替方法: 继
原创
发布博客 2017.09.23 ·
221 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[effectiv c++]条款37:绝不重新定义继承而来的缺省参数值(动态绑定,静态绑定,多态性)

动态绑定与静态绑定静态类型,就是它在程序中被声明时所采用的类型,在编译期确定,不可更改。 动态类型,则是“目前所指的对象的类型”,在运行期决定的,可以更改。 静态绑定,绑定的是对象的静态类型,某特性(比如函数)依赖于对象的静态类型,发生在编译期。 动态绑定,绑定的是对象的动态类型,某特性(比如函数)依赖于对象的动态类型,发生在运行期。静态多态性与动态多态性静态多态性:函数多态性——函数重载
原创
发布博客 2017.09.22 ·
308 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[effectiv c++]条款33:避免遮掩继承而来的名称(重载,覆盖,隐藏)

class Base{private: int x;public: virtual void mf1() = 0; virtual void mf2(); void mf3(); ……};class Derived: public Base{public: virtual void mf1(); void mf4(); ...
原创
发布博客 2017.09.19 ·
335 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

[effectiv c++]条款25:考虑写出一个不抛出异常的swap函数(pimpl手法)

缺省状态 只要类型T支持copy构造函数和copy assignment。namespace std { template<typename T> // template<> 表示它是 std::swap 的一个全特化版本 void swap(T& a, T& b)// 函数名称后的 <Widget> 表示这一特化版本...
原创
发布博客 2017.09.19 ·
324 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[effectiv c++]条款21:返回reference 与 返回object

Complex num1(1, 2);Complex num2(3, 5);Complex result = num1 * num2;如果要实现 operator* 函数, 函数内需要创建一个Complex对象并返回方法一:在stack空间创建对象const Complex& operator*(const Complex& lhs, const Complex& rhs){ Comp
原创
发布博客 2017.09.19 ·
436 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[effectiv c++]条款20:pass-by-reference-to-const 与 pass-by-value(解决slicing问题)

减少构造函数的开销避免slicing(对象切割)问题:当一个derived class对象以by value方式传递并被视为一个base class对象,实参会调用base class的构造函数,当对象调用一个虚函数时,实际调用的时base class的函数而不是derived class的函数。在C++编译器的底层,references往往以指针实现,pass-by-reference通常意味
原创
发布博客 2017.09.19 ·
414 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

[effectiv c++]条款11:operator=的自我赋值与异常处理

证同测试解决自我赋值的问题。 Test& Test::operator=(const Test& rhs){ if (this == &rhs) return *this; delete pb; pb = new Bitmap(*rhs.pb); return *this;}异常处理(如执行new时可用空间不足)可以用copy-and-swap技术解决,同时可以解
原创
发布博客 2017.09.19 ·
380 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多