<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[imJaron的博客]]></title><description><![CDATA[锲而舍之, 朽木不折; 锲而不舍, 金石可镂]]></description><link>https://blog.csdn.net/imJaron</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; imJaron]]></copyright><item><title><![CDATA[低优先级任务在执行过程中高优先级任务在干什么]]></title><link>https://blog.csdn.net/imJaron/article/details/80435475</link><guid>https://blog.csdn.net/imJaron/article/details/80435475</guid><author>imJaron</author><pubDate>Thu, 24 May 2018 15:42:30 +0800</pubDate><description><![CDATA[在操作系统中，低优先级任务想要得到CPU的使用权，是建立在高优先级任务遇到阻塞语句的前提下，比如等待事件标志、等待消息、等待信号量、遇见延迟函数等        而在低优先级任务执行过程中，高优先级任务在干什么，或者说CPU在干什么        在抢占式操作系统中，高优先级任务是不会等待低优先级任务彻底执行完毕后，通过调度器切换任务而获得CPU使用权，而是高优先级任务的就绪条件一满足就会立刻夺过...]]></description><category></category></item><item><title><![CDATA[条件变量(Condition Variable)详解]]></title><link>https://blog.csdn.net/imJaron/article/details/80182635</link><guid>https://blog.csdn.net/imJaron/article/details/80182635</guid><author>imJaron</author><pubDate>Thu, 03 May 2018 16:53:10 +0800</pubDate><description><![CDATA[http://www.wuzesheng.com/?p=1668条件变量(Condtion Variable)是在多线程程序中用来实现“等待-&amp;gt;唤醒”逻辑常用的方法。举个简单的例子，应用程序A中包含两个线程t1和t2。t1需要在 bool变量test_cond为true时才能继续执行，而test_cond的值是由t2来改变的，这种情况下，如何来写程序呢？可供选择的方案有两 种：第一种是t1定...]]></description><category></category></item><item><title><![CDATA[C++的 RTTI 观念和用途（非常详细）]]></title><link>https://blog.csdn.net/imJaron/article/details/80157977</link><guid>https://blog.csdn.net/imJaron/article/details/80157977</guid><author>imJaron</author><pubDate>Tue, 01 May 2018 17:28:42 +0800</pubDate><description><![CDATA[自从1993年Bjarne Stroustrup 〔注1 〕提出有关C++ 的RTTI功能之建议﹐以及C++的异常处理(exception handling)需要RTTI；最近新推出的C++ 或多或少已提供RTTI。 然而，若不小心使用RTTI，可能会导致软件弹性的降低。本文将介绍RTTI的观念和近况﹐并说明如何善用它。 什么是RTTI﹖      在C++ 环境中﹐头文件(header file...]]></description><category></category></item><item><title><![CDATA[内存分配详解 malloc, new, HeapAlloc, VirtualAlloc，GlobalAlloc]]></title><link>https://blog.csdn.net/imJaron/article/details/80157850</link><guid>https://blog.csdn.net/imJaron/article/details/80157850</guid><author>imJaron</author><pubDate>Tue, 01 May 2018 17:15:11 +0800</pubDate><description><![CDATA[很多地方都会使用内存，内存使用过程中操作不当就容易崩溃，无法运行程序，上网Google学习一下，了解整理下他们之间的区别以及使用 ，获益匪浅0x01 各自的定义和理解　　 (1)先看GlobalAlloc()　　　　GlobalAlloc()主要用于Win32应用程序实现从全局堆中分配出内存供2017-03-05程序使用，是16位WINDOWS程序使用的API，对应于系统的全局栈，返回一个内存句柄...]]></description><category></category></item><item><title><![CDATA[VirtualAlloc函数使用总结]]></title><link>https://blog.csdn.net/imJaron/article/details/80157835</link><guid>https://blog.csdn.net/imJaron/article/details/80157835</guid><author>imJaron</author><pubDate>Tue, 01 May 2018 17:13:40 +0800</pubDate><description><![CDATA[如果我们的程序需要动态内存的话，则迟早会调用Win32函数VirtualAlloc。但是程序也可以不调用VirtualAlloc，而是直接调用Windows堆函数或者CRT堆函数。不过，知道VirtualAlloc如何工作，可以帮助我们更好地理解这些调用函数。    首先，必须知道保留(Reserved)内存和占用（Committed）内存的含义。当内存放保留时，一段连续虚拟地址空间被留出。例如，...]]></description><category></category></item><item><title><![CDATA[关于物理内存,虚拟内存等概念]]></title><link>https://blog.csdn.net/imJaron/article/details/80157810</link><guid>https://blog.csdn.net/imJaron/article/details/80157810</guid><author>imJaron</author><pubDate>Tue, 01 May 2018 17:10:50 +0800</pubDate><description><![CDATA[一、概念物理地址(physical address)用于内存芯片级的单元寻址，与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个，但是值得一提的是，虽然可以直接把物理地址理解成插在机器上那根内存本身，把内存看成一个从0字节一直到最大空量逐字节的编号的大数组，然后把这个数组叫做物理地址，但是事实上，这只是一个硬件提供给软件的抽像，内存的寻址方式并不是这样。所以，说它是...]]></description><category></category></item><item><title><![CDATA[C++前向声明(解决类的互相包含问题)]]></title><link>https://blog.csdn.net/imJaron/article/details/80147099</link><guid>https://blog.csdn.net/imJaron/article/details/80147099</guid><author>imJaron</author><pubDate>Mon, 30 Apr 2018 08:18:26 +0800</pubDate><description><![CDATA[类的互相包含假设有两个类
#include &quot;B.h&quot;

class A {
private:
    B *b;
};

#include &quot;A.h&quot;

class B {
private:
    A *a;
};

编译时编译器会提示类A或类B未定义 这是由于两个类互相引用对方
造成类似先有鸡还是先有蛋的问题 编译器无法正常的按顺序编译代码1234567891011121314151617前...]]></description><category></category></item><item><title><![CDATA[C/C++程序员是这样理解内存的]]></title><link>https://blog.csdn.net/imJaron/article/details/80147073</link><guid>https://blog.csdn.net/imJaron/article/details/80147073</guid><author>imJaron</author><pubDate>Mon, 30 Apr 2018 08:10:02 +0800</pubDate><description><![CDATA[C/C++作为偏底层的语言，我们往往可以使用其对内存进行直接操作，相对来说比较灵活，但任何事情都有两面性，对内存的操作简便也经常导致程序出现内存bug。所以我们在编程时要特别重视内存和指针等概念，尽量避免bug，而这均取决于我们对内存的理解。       本文就从C/C++的内存基础知识讲起，让我们对内存有一个更深入的理解。　　一、对内的分配　　32位操作系统支持4GB内存的连续访问，但通常把内存...]]></description><category></category></item><item><title><![CDATA[C++ 内存分配(new，operator new)详解]]></title><link>https://blog.csdn.net/imJaron/article/details/80147052</link><guid>https://blog.csdn.net/imJaron/article/details/80147052</guid><author>imJaron</author><pubDate>Mon, 30 Apr 2018 07:54:57 +0800</pubDate><description><![CDATA[本文主要讲述C++ new运算符和operator new, placement new之间的种种关联，new的底层实现，以及operator new的重载和一些在内存池，STL中的应用。一 new 运算符和 operator new()：new：指我们在C++里通常用到的运算符，比如A* a = new A;  对于new来说，有new和::new之分，前者位于stdoperator new()...]]></description><category></category></item><item><title><![CDATA[C++内存管理（超长，例子很详细，排版很好）]]></title><link>https://blog.csdn.net/imJaron/article/details/80147042</link><guid>https://blog.csdn.net/imJaron/article/details/80147042</guid><author>imJaron</author><pubDate>Mon, 30 Apr 2018 07:41:01 +0800</pubDate><description><![CDATA[[导语]内存管理是C++最令人切齿痛恨的问题，也是C++最有争议的问题，C++高手从中获得了更好的性能，更大的自由，C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨，但内存管理在C++中无处不在，内存泄漏几乎在每个C++程序中都会发生，因此要想成为C++高手，内存管理一关是必须要过的，除非放弃C++，转到Java或者.NET，他们的内存管理基本是自动的，当然你也放弃了自由和对内存的支配权，还...]]></description><category></category></item><item><title><![CDATA[UDP协议的两个主要方法sendto和recvfrom详解]]></title><link>https://blog.csdn.net/imJaron/article/details/80136107</link><guid>https://blog.csdn.net/imJaron/article/details/80136107</guid><author>imJaron</author><pubDate>Sat, 28 Apr 2018 15:56:09 +0800</pubDate><description><![CDATA[sendto()简述：  向一指定目的地发送数据。  #include &amp;lt;winsock.h&amp;gt;  int PASCAL FAR sendto( SOCKET s, const char FAR* buf, int len, int flags,  const struct sockaddr FAR* to, int tolen);  s：一个标识套接口的描述字。  buf：包含待发送数...]]></description><category></category></item><item><title><![CDATA[Socket详解]]></title><link>https://blog.csdn.net/imJaron/article/details/80127982</link><guid>https://blog.csdn.net/imJaron/article/details/80127982</guid><author>imJaron</author><pubDate>Sat, 28 Apr 2018 13:47:11 +0800</pubDate><description><![CDATA[“一切皆Socket！”话虽些许夸张，但是事实也是，现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值，那网络中进程之间如何通信，如我们每天打开浏览器浏览网页时，浏览器的进程怎么与web服务器通信的？当你用QQ聊天时，QQ进程怎么与服务器或你好友所在的QQ进程通信？这些都得靠socket？那什么是socket？socket的类型有哪些？还有socket...]]></description><category></category></item><item><title><![CDATA[MAKEWORD(2,2)解释]]></title><link>https://blog.csdn.net/imJaron/article/details/80122500</link><guid>https://blog.csdn.net/imJaron/article/details/80122500</guid><author>imJaron</author><pubDate>Sat, 28 Apr 2018 13:29:14 +0800</pubDate><description><![CDATA[宏的原始定义：#define MAKEWORD(a, b) ((WORD)(((BYTE)(((DWORD_PTR)(a)) &amp;amp; 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) &amp;amp; 0xff))) &amp;lt;&amp;lt; 8)) 返回值：一个无符号16位整形数。例子：WORD wVersionRequested;
wVersionRequested = ...]]></description><category></category></item><item><title><![CDATA[什么是Winsock WSAData ?]]></title><link>https://blog.csdn.net/imJaron/article/details/80117911</link><guid>https://blog.csdn.net/imJaron/article/details/80117911</guid><author>imJaron</author><pubDate>Sat, 28 Apr 2018 10:56:57 +0800</pubDate><description><![CDATA[什么是Winsock    Winsock是Windows下的网络编程接口，它是由Unix下的BSD Socket发展而来,是一个与网络协议无关的编程接口。构建编程环境    Winsock在常见的Windows平台上有两个主要的版本，即Winsock1和Winsock2。编写与Winsock1兼容的程序你需要引用头文件WINSOCK.H，如果编写使用Winsock2的程序，则需要引用WINSOC...]]></description><category></category></item><item><title><![CDATA[函数返回值与RVO优化]]></title><link>https://blog.csdn.net/imJaron/article/details/80106566</link><guid>https://blog.csdn.net/imJaron/article/details/80106566</guid><author>imJaron</author><pubDate>Fri, 27 Apr 2018 13:05:48 +0800</pubDate><description><![CDATA[RVO优化：return value optimistic，指当一个函数返回一个值类型而非引用类型时，可以绕过拷贝/移动构造函数，直接在调用函数的地方构造返回值。要发生rvo需要有三个条件：1，如果类型是自定义类型，那么此时的拷贝/移动构造函数是可访问的2，返回类型必须与实际类型完全一致，即返回时不需要进行隐式类型转换，否则不能进行rvo，因为不知道用户定义的类会不会有特别的类型转换构造函数3，返...]]></description><category></category></item><item><title><![CDATA[C++11中的继承构造函数]]></title><link>https://blog.csdn.net/imJaron/article/details/80106279</link><guid>https://blog.csdn.net/imJaron/article/details/80106279</guid><author>imJaron</author><pubDate>Fri, 27 Apr 2018 12:17:39 +0800</pubDate><description><![CDATA[一、问题描写叙述  在继承体系中，假设派生类想要使用基类的构造函数，须要在构造函数中显式声明。例如以下：struct A
{
   A(int i){}
}；

struct B:A
{
  B(int i):A(i){}
};在这里，B派生于A，B又在构造函数中调用A的构造函数。从而完毕构造函数的传递。又比方例如以下。当B中存在成员变量时：struct A
{
   A(int i){}
}；
...]]></description><category></category></item><item><title><![CDATA[30分钟了解C++11新特性]]></title><link>https://blog.csdn.net/imJaron/article/details/80104733</link><guid>https://blog.csdn.net/imJaron/article/details/80104733</guid><author>imJaron</author><pubDate>Fri, 27 Apr 2018 10:48:04 +0800</pubDate><description><![CDATA[什么是C++11C++11是曾经被叫做C++0x，是对目前C++语言的扩展和修正，C++11不仅包含核心语言的新机能，而且扩展了C++的标准程序库（STL），并入了大部分的C++ Technical Report 1（TR1）程序库(数学的特殊函数除外)。C++11包括大量的新特性：包括lambda表达式，类型推导关键字auto、decltype，和模板的大量改进。本文将对C++11的以上新特性进...]]></description><category></category></item><item><title><![CDATA[右值引用,转移语义与完美转发]]></title><link>https://blog.csdn.net/imJaron/article/details/80093051</link><guid>https://blog.csdn.net/imJaron/article/details/80093051</guid><author>imJaron</author><pubDate>Thu, 26 Apr 2018 14:02:47 +0800</pubDate><description><![CDATA[1. 左值与右值:    C++对于左值和右值没有标准定义,但是有一个被广泛认同的说法:可以取地址的,有名字的,非临时的就是左值;不能取地址的,没有名字的,临时的就是右值.    可见立即数,函数返回的值等都是右值;而非匿名对象(包括变量),函数返回的引用,const对象等都是左值.    从本质上理解,创建和销毁由编译器幕后控制的,程序员只能确保在本行代码有效的,就是右值(包括立即数);而用户创...]]></description><category></category></item><item><title><![CDATA[如何保证只能在堆(heap)上创建对象?]]></title><link>https://blog.csdn.net/imJaron/article/details/80082687</link><guid>https://blog.csdn.net/imJaron/article/details/80082687</guid><author>imJaron</author><pubDate>Wed, 25 Apr 2018 17:19:15 +0800</pubDate><description><![CDATA[代码:view plainprint?class OnlyHeapClass  {  public:      OnlyHeapClass()      {      }        void Destroy()      {          delete this; // 等效于&quot;OnlyHeapClass::~OnlyHeapClass();&quot;, 写                    ...]]></description><category></category></item><item><title><![CDATA[c++11智能指针解析——揭开底层面纱，完整理解智能指针]]></title><link>https://blog.csdn.net/imJaron/article/details/80080806</link><guid>https://blog.csdn.net/imJaron/article/details/80080806</guid><author>imJaron</author><pubDate>Wed, 25 Apr 2018 15:54:14 +0800</pubDate><description><![CDATA[ 简断截说：c++的入门坑点大家都是有目共睹的，无非就是指针的理解不深导致一些野指针，内存泄露等问题，所以就不赘述。智能指针正好能够弥补这些问题，因为它本质是存放在栈的模板对象，只是在栈内部包了一层指针。而栈在其生命周期结束时，其中的指针指向的堆内存也自然被释放了。因而实现了智能管理的效果，不需要考虑内存问题了，其实有点类似某种单例写法，程序运行结束，也不用考虑单例对象内存问题。     本次讨论...]]></description><category></category></item></channel></rss>