浅拷贝 深拷贝

Q. What is the difference between a shallow copy and a deep copy?

深拷贝和浅拷贝的定义可以简单理解成:如果一个类拥有资源(堆,或者是其它系统资源),当这个类的对象发生复制过程的时候,这个过程就可以叫做深拷贝,反之对象存在资源,但复制过程并未复制资源的情况视为浅拷贝。
浅拷贝资源后在释放资源的时候会产生资源归属不清的情况导致程序运行出错。

参考链接:http://www.cnblogs.com/BlueTzar/articles/1223313.html
http://tech.163.com/05/0404/17/1GGRTTV300091589.html

glDrawArrays VS glDrawElements

在红宝书中这两个函数的区别并没有做介绍,只是说前者相当于:

glBegin (mode)
for(i=0; i<count; i++)
{
     glArrayElement(first + i);
}
glEnd();
后者相当于:
glBegin (mode)
for(i=0; i<count; i++)
{
     glArrayElement(indices[i]);
}
glEnd();
其实从这比较难看出区别,重点在于其参数上,后者有用到了索引
网络上的说法是:
 glDrawArrays传输或指定的数据是最终的真实数据,在绘制时效能更好
而glDrawElements指定的是真实数据的调用索引,在内存/显存占用上更节省
 glDrawArrays更快
glDrawElements所占的内存/显存容量更小
参考链接:

CPaintDC dc(this);

把OnPaint里的代码都注掉,发现cpu一直被占用一个核,检查发现代码还一直进入OnPaint函数里,虽然这个函数里什么东西都没有。
同事过来检查说,至少得加一行CPaintDC dc(this);
因为CPaintDC的析构函数里有EndPaint操作,会清除消息队列里的WM_PAINT消息,
否则应用程序会以为程序还没有Paint完,就一直进去Paint。