<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[OOOOOOAAAAA的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/OOOOOOAAAAA</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; OOOOOOAAAAA]]></copyright><item><title><![CDATA[侯捷 c++ 内存管理笔记 p24-p30]]></title><link>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122826020</link><guid>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122826020</guid><author>OOOOOOAAAAA</author><pubDate>Fri, 11 Feb 2022 14:35:57 +0800</pubDate><description><![CDATA[std::alloc 运行原理

16个指针一开始全为0

以后申请内存时优先看已申请为备用的(占备池)进行分配，RoundUp为追加量，，，累计申请量&gt;&gt;4 (/16)












]]></description><category></category></item><item><title><![CDATA[bind1st和bind2nd以及c++11 bind 的用法]]></title><link>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122812008</link><guid>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122812008</guid><author>OOOOOOAAAAA</author><pubDate>Mon, 07 Feb 2022 17:28:13 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;
#include &lt;functional&gt;
#include &lt;algorithm&gt;
#include &lt;vector&gt;
using namespace std;
using namespace std::placeholders;

/**
 *
 *  原来只能使用bind1st bind2nd绑定
 *
 *  c++11使用bind即可
 *  using namespace std::placeholders;]]></description><category></category></item><item><title><![CDATA[侯捷 c++ 内存管理笔记 p16-p23]]></title><link>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122800079</link><guid>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122800079</guid><author>OOOOOOAAAAA</author><pubDate>Sun, 06 Feb 2022 19:03:12 +0800</pubDate><description><![CDATA[new handler
理解C++ new-handler机制
=default =delete
C++中的 =default和=delete
VC6 malloc

申请一块12字节大小的内存，vc6实际分配大小为0x40 （56），其中绿色的pad为填补所用
VC6标准分配器实现

BC5标准分配器实现

G2.9标准分配器实现


G2.9 std::alloc VS G4.9 __pool_alloc

std::alloc

16条链表，都为指针，每条负责一种大小的内存，依次为8、16…16*8字]]></description><category></category></item><item><title><![CDATA[侯捷 c++ 内存管理笔记 p12-p15]]></title><link>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122784358</link><guid>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122784358</guid><author>OOOOOOAAAAA</author><pubDate>Fri, 04 Feb 2022 21:36:05 +0800</pubDate><description><![CDATA[per-class allocator
version 1


Screen *p[N]声明p为一个指针数组，每个位置存放一个Screen *
然后for循环逐个分配内存
结果：
左面间隔8，为自身大小，没有上下所带的cookie（4字节）
右面为::opeartor new，间隔16=自身大小+上下携带cookie*2
version 2


此类加了union，内部使用了嵌入式指针（embedded pointer）
相关知识：
union用法
嵌入式指针
union中包含一个struct和一个指针，大]]></description><category></category></item><item><title><![CDATA[侯捷 c++ 内存管理笔记 p7-p11]]></title><link>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122776797</link><guid>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122776797</guid><author>OOOOOOAAAAA</author><pubDate>Thu, 03 Feb 2022 18:04:24 +0800</pubDate><description><![CDATA[array new,array delete

delete [] buf 调用析构函数，若为delete buf，则只会调用一次


此处int并没有析构函数，因此[]加不加是无所谓的
但如果放的是对象，且其析构函数是有意义的，则需要加[]
placement new
char *buf=new char[sizeof(Complex)*3];
//（buf） 括号内部即为operator new参数
Complex* pc=new(buf)Complex(1,2);
...
delete [] buf;]]></description><category></category></item><item><title><![CDATA[effective C++条款52案例]]></title><link>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122776098</link><guid>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122776098</guid><author>OOOOOOAAAAA</author><pubDate>Thu, 03 Feb 2022 15:10:30 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;
using namespace std;
class A
{
public:
    static void *operator new(std::size_t size) throw(std::bad_alloc)
    {
        cout &lt;&lt; "A new" &lt;&lt; endl;
        return ::operator new(size);
    }
    static void operator de]]></description><category></category></item><item><title><![CDATA[C++ rb_tree的几种构造方法]]></title><link>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122772776</link><guid>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122772776</guid><author>OOOOOOAAAAA</author><pubDate>Wed, 02 Feb 2022 22:38:32 +0800</pubDate><description><![CDATA[在学习rbtree时，看到第四个模板参数为class _Compare，以下为构造rbtree的几种方法
#include &lt;iostream&gt;
#include &lt;bits/stl_tree.h&gt;
#include &lt;functional&gt;
using namespace std;
template &lt;class T&gt;
struct identity : public unary_function&lt;T, T&gt;
{
    const T &amp]]></description><category></category></item><item><title><![CDATA[C++ Lambda 表达式作为类模板参数]]></title><link>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122772689</link><guid>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122772689</guid><author>OOOOOOAAAAA</author><pubDate>Wed, 02 Feb 2022 22:28:23 +0800</pubDate><description><![CDATA[学习C++ rbtree时发现第四个模板参数为class _Compare，若不使用标准库自带的less&lt;&gt;等模板目前我只发现通过构造类编写operator()或通过std::function&lt;&gt;才能通过编译


#include &lt;iostream&gt;
#include &lt;deque&gt;
#include &lt;bits/stl_tree.h&gt;
#include &lt;functional&gt;
using namespace std;

temp.]]></description><category></category></item><item><title><![CDATA[侯捷 c++ 内存管理笔记 p1-p6]]></title><link>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122771451</link><guid>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122771451</guid><author>OOOOOOAAAAA</author><pubDate>Wed, 02 Feb 2022 19:52:22 +0800</pubDate><description><![CDATA[c++ memory primitives
四种内存使用方式

malloc(size_t size);
new ClassName;
例：

在这里插入代码片
Complex *pc=new Complex(1,2);//调用普通new
//编译器转为如下

Complex *pc;
try{
	void* mem=operator new(sizeof(Complex));//调用operator new(size_t size)
	pc=static_cast&lt;Complex*&gt;mem;
]]></description><category></category></item><item><title><![CDATA[effectiveC++ 条款43案例]]></title><link>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122744715</link><guid>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/122744715</guid><author>OOOOOOAAAAA</author><pubDate>Sat, 29 Jan 2022 16:14:07 +0800</pubDate><description><![CDATA[#include &lt;string&gt;
#include &lt;iostream&gt;
class CompanyA{
public:
	void sendClearText(const std::string &amp;msg){std::cout&lt;&lt;"A"&lt;&lt;std::endl;}
	void sendSecretText(const std::string &amp;msg);
};
class CompanyB{
public:
	void sendClearT.]]></description><category></category></item><item><title><![CDATA[多项式mod的运算（例题）]]></title><link>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/118917354</link><guid>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/118917354</guid><author>OOOOOOAAAAA</author><pubDate>Mon, 19 Jul 2021 23:54:13 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/yaongtime/article/details/17200401

根据上述作者方法此处作一例题，题目对应https://www.bilibili.com/video/BV1zt411S7r8

信息安全数学基础——哈尔滨工业大学P27题目




]]></description><category></category></item><item><title><![CDATA[每次进入终端都要重新source /etc/profile 才能workon]]></title><link>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/116406443</link><guid>https://blog.youkuaiyun.com/OOOOOOAAAAA/article/details/116406443</guid><author>OOOOOOAAAAA</author><pubDate>Tue, 04 May 2021 22:49:16 +0800</pubDate><description><![CDATA[Linux 中python virtualenv安装和路径变量设置，以及解决每次进入终端都要重新source /etc/profile 才能workon

1、virtualenv 安装


sudo pip install virtualenv 
sudo pip install virtualenvwrapper

2、路径变量设置

我一开始设置在了/etc/profile中，写在最末尾即可


export WORKON_HOME=$HOME/.virtualenvs
source /usr/...]]></description><category></category></item></channel></rss>