- 博客(12)
- 收藏
- 关注
原创 侯捷 c++ 内存管理笔记 p24-p30
std::alloc 运行原理16个指针一开始全为0以后申请内存时优先看已申请为备用的(占备池)进行分配,RoundUp为追加量,,,累计申请量>>4 (/16)
2022-02-11 14:35:57 513
原创 bind1st和bind2nd以及c++11 bind 的用法
#include <iostream>#include <functional>#include <algorithm>#include <vector>using namespace std;using namespace std::placeholders;/** * * 原来只能使用bind1st bind2nd绑定 * * c++11使用bind即可 * using namespace std::placeholders;
2022-02-07 17:28:13 499
原创 侯捷 c++ 内存管理笔记 p16-p23
new handler理解C++ new-handler机制=default =deleteC++中的 =default和=deleteVC6 malloc申请一块12字节大小的内存,vc6实际分配大小为0x40 (56),其中绿色的pad为填补所用VC6标准分配器实现BC5标准分配器实现G2.9标准分配器实现G2.9 std::alloc VS G4.9 __pool_allocstd::alloc16条链表,都为指针,每条负责一种大小的内存,依次为8、16…16*8字
2022-02-06 19:03:12 813
原创 侯捷 c++ 内存管理笔记 p12-p15
per-class allocatorversion 1Screen *p[N]声明p为一个指针数组,每个位置存放一个Screen *然后for循环逐个分配内存结果:左面间隔8,为自身大小,没有上下所带的cookie(4字节)右面为::opeartor new,间隔16=自身大小+上下携带cookie*2version 2此类加了union,内部使用了嵌入式指针(embedded pointer)相关知识:union用法嵌入式指针union中包含一个struct和一个指针,大
2022-02-04 21:36:05 921
原创 侯捷 c++ 内存管理笔记 p7-p11
array new,array deletedelete [] buf 调用析构函数,若为delete buf,则只会调用一次此处int并没有析构函数,因此[]加不加是无所谓的但如果放的是对象,且其析构函数是有意义的,则需要加[]placement newchar *buf=new char[sizeof(Complex)*3];//(buf) 括号内部即为operator new参数Complex* pc=new(buf)Complex(1,2);...delete [] buf;
2022-02-03 18:04:24 858
原创 effective C++条款52案例
#include <iostream>using namespace std;class A{public: static void *operator new(std::size_t size) throw(std::bad_alloc) { cout << "A new" << endl; return ::operator new(size); } static void operator de
2022-02-03 15:10:30 1908
原创 C++ rb_tree的几种构造方法
在学习rbtree时,看到第四个模板参数为class _Compare,以下为构造rbtree的几种方法#include <iostream>#include <bits/stl_tree.h>#include <functional>using namespace std;template <class T>struct identity : public unary_function<T, T>{ const T &
2022-02-02 22:38:32 296
原创 C++ Lambda 表达式作为类模板参数
学习C++ rbtree时发现第四个模板参数为class _Compare,若不使用标准库自带的less<>等模板目前我只发现通过构造类编写operator()或通过std::function<>才能通过编译#include <iostream>#include <deque>#include <bits/stl_tree.h>#include <functional>using namespace std;temp.
2022-02-02 22:28:23 638
原创 侯捷 c++ 内存管理笔记 p1-p6
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<Complex*>mem;
2022-02-02 19:52:22 656
原创 effectiveC++ 条款43案例
#include <string>#include <iostream>class CompanyA{public: void sendClearText(const std::string &msg){std::cout<<"A"<<std::endl;} void sendSecretText(const std::string &msg);};class CompanyB{public: void sendClearT.
2022-01-29 16:14:07 517
原创 多项式mod的运算(例题)
https://blog.csdn.net/yaongtime/article/details/17200401根据上述作者方法此处作一例题,题目对应https://www.bilibili.com/video/BV1zt411S7r8信息安全数学基础——哈尔滨工业大学P27题目
2021-07-19 23:54:13 3989 3
原创 每次进入终端都要重新source /etc/profile 才能workon
Linux 中python virtualenv安装和路径变量设置,以及解决每次进入终端都要重新source /etc/profile 才能workon1、virtualenv 安装sudo pip install virtualenv sudo pip install virtualenvwrapper2、路径变量设置我一开始设置在了/etc/profile中,写在最末尾即可export WORKON_HOME=$HOME/.virtualenvssource /usr/...
2021-05-04 22:49:16 507
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人