imJaron的博客

锲而舍之, 朽木不折; 锲而不舍, 金石可镂

低优先级任务在执行过程中高优先级任务在干什么

在操作系统中,低优先级任务想要得到CPU的使用权,是建立在高优先级任务遇到阻塞语句的前提下,比如等待事件标志、等待消息、等待信号量、遇见延迟函数等        而在低优先级任务执行过程中,高优先级任务在干什么,或者说CPU在干什么        在抢占式操作系统中,高优先级任务是不会等待低优先级...

2018-05-24 15:42:30

阅读数 1122

评论数 0

条件变量(Condition Variable)详解

http://www.wuzesheng.com/?p=1668条件变量(Condtion Variable)是在多线程程序中用来实现“等待->唤醒”逻辑常用的方法。举个简单的例子,应用程序A中包含两个线程t1和t2。t1需要在 bool变量test_cond为true时才能...

2018-05-03 16:53:10

阅读数 356

评论数 0

C++的 RTTI 观念和用途(非常详细)

自从1993年Bjarne Stroustrup 〔注1 〕提出有关C++ 的RTTI功能之建议﹐以及C++的异常处理(exception handling)需要RTTI;最近新推出的C++ 或多或少已提供RTTI。 然而,若不小心使用RTTI,可能会导致软件弹性的降低。本文将介绍RTTI的观念和...

2018-05-01 17:28:42

阅读数 127

评论数 0

内存分配详解 malloc, new, HeapAlloc, VirtualAlloc,GlobalAlloc

很多地方都会使用内存,内存使用过程中操作不当就容易崩溃,无法运行程序,上网Google学习一下,了解整理下他们之间的区别以及使用 ,获益匪浅0x01 各自的定义和理解   (1)先看GlobalAlloc()    GlobalAlloc()主要用于Win32应用程序实现从全局堆中分配出内存供20...

2018-05-01 17:15:11

阅读数 124

评论数 0

VirtualAlloc函数使用总结

如果我们的程序需要动态内存的话,则迟早会调用Win32函数VirtualAlloc。但是程序也可以不调用VirtualAlloc,而是直接调用Windows堆函数或者CRT堆函数。不过,知道VirtualAlloc如何工作,可以帮助我们更好地理解这些调用函数。    首先,必须知道保留(Reser...

2018-05-01 17:13:40

阅读数 145

评论数 0

关于物理内存,虚拟内存等概念

一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这...

2018-05-01 17:10:50

阅读数 75

评论数 0

C++前向声明(解决类的互相包含问题)

类的互相包含假设有两个类 #include "B.h" class A { private: B *b; }; #include "A.h" class B { private: A *a; }; 编译...

2018-04-30 08:18:26

阅读数 145

评论数 0

C/C++程序员是这样理解内存的

C/C++作为偏底层的语言,我们往往可以使用其对内存进行直接操作,相对来说比较灵活,但任何事情都有两面性,对内存的操作简便也经常导致程序出现内存bug。所以我们在编程时要特别重视内存和指针等概念,尽量避免bug,而这均取决于我们对内存的理解。       本文就从C/C++的内存基础知识讲起,让我...

2018-04-30 08:10:02

阅读数 85

评论数 0

C++ 内存分配(new,operator new)详解

本文主要讲述C++ new运算符和operator new, placement new之间的种种关联,new的底层实现,以及operator new的重载和一些在内存池,STL中的应用。一 new 运算符和 operator new():new:指我们在C++里通常用到的运算符,比如A* a =...

2018-04-30 07:54:57

阅读数 66

评论数 0

C++内存管理(超长,例子很详细,排版很好)

[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放...

2018-04-30 07:41:01

阅读数 201

评论数 0

UDP协议的两个主要方法sendto和recvfrom详解

sendto()简述:  向一指定目的地发送数据。  #include <winsock.h>  int PASCAL FAR sendto( SOCKET s, const char FAR* buf, int len, int flags,  con...

2018-04-28 15:56:09

阅读数 239

评论数 0

Socket详解

“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的...

2018-04-28 13:47:11

阅读数 48

评论数 0

MAKEWORD(2,2)解释

宏的原始定义:#define MAKEWORD(a, b) ((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) &...

2018-04-28 13:29:14

阅读数 81

评论数 0

什么是Winsock WSAData ?

什么是Winsock    Winsock是Windows下的网络编程接口,它是由Unix下的BSD Socket发展而来,是一个与网络协议无关的编程接口。构建编程环境    Winsock在常见的Windows平台上有两个主要的版本,即Winsock1和Winsock2。编写与Winsock1兼...

2018-04-28 10:56:57

阅读数 45

评论数 0

函数返回值与RVO优化

RVO优化:return value optimistic,指当一个函数返回一个值类型而非引用类型时,可以绕过拷贝/移动构造函数,直接在调用函数的地方构造返回值。要发生rvo需要有三个条件:1,如果类型是自定义类型,那么此时的拷贝/移动构造函数是可访问的2,返回类型必须与实际类型完全一致,即返回时...

2018-04-27 13:05:48

阅读数 71

评论数 0

C++11中的继承构造函数

一、问题描写叙述  在继承体系中,假设派生类想要使用基类的构造函数,须要在构造函数中显式声明。例如以下:struct A { A(int i){} }; struct B:A { B(int i):A(i){} };在这里,B派生于A,B又在构造函数中调用A的构造函数。从而完毕构造函数...

2018-04-27 12:17:39

阅读数 94

评论数 0

30分钟了解C++11新特性

什么是C++11C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical Report 1(TR1)程序库(数学的特殊函数除外)。C++11包括大量的新特性:包括lambd...

2018-04-27 10:48:04

阅读数 61

评论数 0

右值引用,转移语义与完美转发

1. 左值与右值:    C++对于左值和右值没有标准定义,但是有一个被广泛认同的说法:可以取地址的,有名字的,非临时的就是左值;不能取地址的,没有名字的,临时的就是右值.    可见立即数,函数返回的值等都是右值;而非匿名对象(包括变量),函数返回的引用,const对象等都是左值.    从本质...

2018-04-26 14:02:47

阅读数 220

评论数 0

如何保证只能在堆(heap)上创建对象?

代码:view plainprint?class OnlyHeapClass  {  public:      OnlyHeapClass()      {      }        void Destroy()      {          delete this; // 等效于&q...

2018-04-25 17:19:15

阅读数 48

评论数 0

c++11智能指针解析——揭开底层面纱,完整理解智能指针

 简断截说:c++的入门坑点大家都是有目共睹的,无非就是指针的理解不深导致一些野指针,内存泄露等问题,所以就不赘述。智能指针正好能够弥补这些问题,因为它本质是存放在栈的模板对象,只是在栈内部包了一层指针。而栈在其生命周期结束时,其中的指针指向的堆内存也自然被释放了。因而实现了智能管理的效果,不需要...

2018-04-25 15:54:14

阅读数 40

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭