c/c++语法
liu3daniel
这个作者很懒,什么都没留下…
展开
-
string实现
目标:1.string接口纯虚函数类StringInterface;2.我的ubuntu上string实现重写(但不包括写时复制);3.一种支持小字符串优化的实现;4.基于StringInterface的多态测试case集合;6.多场景性能分析。当前时间不太够,只差不多完成了1\2,先放到博客备忘,之后补上。string_interface.h//#defi原创 2017-06-16 00:46:54 · 295 阅读 · 0 评论 -
volatile实例
volatile实例一、volatile的汇编解释main.c:#include int a = 100;void main(){ while(a == 100){} printf("finally...\n");}优化要开得比较高,gcc -O2 -S main.c得到 cmpl $100, a //先比较a和100 j原创 2017-06-14 17:56:52 · 471 阅读 · 0 评论 -
近期内存学习的几点心得
最近写代码对于内存分配这一方面遇到了一些现象,下面罗列下这些现象,小部分除了现象和推测还有解释。1.malloc分配内存结构 char *p = (char *)malloc(1); printf("%d %d %u\n",*(int *)(p - 2 * sizeof(size_t)),*(int *)(p - sizeof(int)),(unsigned)p);原创 2017-05-24 10:22:35 · 673 阅读 · 0 评论 -
读c++primer有感1---const
前言:c++关键字const,从字面意思上来说期望被const修饰的变量、对象、引用、类成员函数等拥有某种“保持不变”的特征、然而这些特征很多可以被破坏掉,甚至c++自身就提供破坏这些特征的手段。可以说const更类似于一种君子协定,比如函数设计者希望用户认为可以放心地使用函数,此时const X &obj保证不会让用户感知到obj前后变化;类设计者设计const成员函数告诉编译器可以让con原创 2017-04-06 16:41:08 · 538 阅读 · 1 评论 -
读c++ primer有感 -- 左值和右值
一、变量和内存变量实际对应栈地址,例1: int i = 5; int j = i;直接g++不优化,主要的汇编代码对应三行: movl $5, 24(%esp) //栈顶地址+24字节的栈空间被赋值为25L,也就是i的地址 movl 24(%esp), %eax //i的地址对应内容(也就是5),拷贝到寄存器ax中 movl原创 2017-04-11 13:04:44 · 468 阅读 · 0 评论 -
读c++ primer有感--string源码中的模板编程示例
看string源码,第一个问题是传说中的模板编程,不过过会儿了解下后觉得但是处于读懂代码的目的的话,相应的模板编程的奇淫技巧也是能够被理解的。本文举例说明一下相关string源码中用到的技巧,当然,也希望通过对表象的解释对隐藏在其后的编译时多态能揭露一二。本文的例子在源码中多多少少都会找到些例子,不那么空兄来风。ps:知道点模板编程的东西,直接的一点好处是g++的时候面对一大陀不知所云的错原创 2017-05-09 16:15:01 · 336 阅读 · 0 评论 -
一个小例子试图解释多态和虚函数表
直接上代码吧:#include class Base{ public: //没用到,是为了让类有实体大小 int num = 10; virtual void print() const {printf("in Base\n");}};class Derived : public Base{ public:原创 2017-07-05 22:09:53 · 212 阅读 · 0 评论