C++
文章平均质量分 56
videosender
正直,善良,脚踏实地
展开
-
怎么从vector里删除元素
现在用stl的人越来越多, stl确实是套很漂亮的算法和数据结构库. 但是初用stl的人往往会遇上很多问题.从一个容器中删除元素,是很常用的操作,但是也是初学者常会犯错误的地方,删除map和list中元素可能会犯迭代器失效的错误. vector是stl里很常用的一个容器, 和map,list等容器相比, 从vector中删符合某些条件的元素有更多的麻烦.比如,我们要完成如下的任务.原创 2007-01-01 16:40:00 · 9938 阅读 · 2 评论 -
一些微软 google IBM 笔试题 面试题
收集了一些我去微软 IBM google 笔试 面试的比较好的题目。大家可以练习一下,全都是c语言题目。1. 写一个宏toStr,把一个宏定义的符号变为对应的宏定义内容的字符串。比如#define NAME jackprintf("NAME is %s\n", toStr(NAME));会输出NAME is jack。2. 接着第一题,扩展一下,写个宏print原创 2008-10-24 20:24:00 · 2335 阅读 · 1 评论 -
c/c++ 里面的变长参数的实现
c里面的变长参数,c++里面也有。提供了:一个类型 va_list3个宏 va_start va_arg va_end使用还是很方便的,但是实现是怎么样的呢?原创 2011-05-16 23:04:00 · 6576 阅读 · 5 评论 -
调试经验谈-根据crash dump查找bug
很多时候,我们不知道如何重现一个crash问题,只有一些log或者dump,拿到一个这样的crash的问题,并不知道是什么原因,怎么样来慢慢分析,这篇文章就举了一个现实的例子,看看怎么查找一个crash问题的原因。这个是我们软件发生的一次崩溃,只在客户的环境上发生,没有人知道在实验室里怎么重现,好在客户那边给出了windows的dump文件,这样就可以很容易的查看当时的案发现场了。用win原创 2010-01-24 16:01:00 · 2172 阅读 · 2 评论 -
调试经验谈-release版特有的问题
c++的程序,都会有release和debug版,主要是优化选项和运行时检测不同。我们有时会遇上在debug版运行正常,release版运行错误的情况根据我的经验,主要是两个原因,一个是变量没有初始化,导致debug和release版的初始值不同,另外就是内存布局不同,导致一些内存溢出或野指针的问题表现不同。 检查的方法,因为release的程序往往不好调试,所以先通过log缩小问题范围原创 2010-01-21 21:43:00 · 989 阅读 · 2 评论 -
一个关于TCHAR的离奇bug
最近解了一个超级让人faint的bug。 一个成员函数f()明明修改了一个成员变量a,可是执行完一看,压根就没改。debug的时候也看不出啥问题,进这个函数f的时候是看着改了,一离开这个函数,a的值还是修改前的值。 我又研究了十几分钟,终于看出了原因。该成员函数是父类B的,子类C继承了B。B类的定义里,简化一下,就是这样的:class B{ TCHAR str[MAXLEN原创 2009-04-13 21:23:00 · 767 阅读 · 5 评论 -
IE 里面的activeX控件的打印预览问题
昨天接到一个bug,我们的软件有一个浏览器activeX插件,在html页面里面显示附件列表,支持直接拖放文件,这个控件在浏览的时候挺正常,但是如果使用IE的网页打印预览功能,那个控件就有一块是空白。 刚拿到这个问题确实让我挺挠头,完全不知道从哪下手。不过通过分析代码,发现是这个控件里面的一个list control没画出来,跟了一下activex控件的ondraw方法,发觉里面没有对list c原创 2008-11-26 20:43:00 · 3912 阅读 · 1 评论 -
看chromium代码发现一点有趣的东西
国庆比较闲,就看了一下chromium的代码,也就是chrome的代码。我比较感兴趣的是它多进程管理和沙箱的实现。整体架构就不说了,官网上写得挺清楚,具体流程我也不说了,说的再清楚也不如代码清楚。文档http://sites.google.com/a/chromium.org/dev/打包下载地址http://build.chromium.org/buildbot/archives/chromiu原创 2008-10-03 03:22:00 · 1662 阅读 · 0 评论 -
C/C++动态内存管理(2)
windows的heap管理 实在没什么好说的,windows internal 讲了个大概. 微软有个ppt把内部的数据结构已经讲的够清楚了.http://www.google.com.hk/url?sa=t&source=web&cd=6&ved=0CD0QFjAF&url=http%3A%2F%2Fcybertech.net%2F~sh0ksh0k%2Fprojects%2原创 2007-01-12 23:09:00 · 1343 阅读 · 0 评论 -
C/C++动态内存管理(1)
c和c++的内存管理里面最复杂的恐怕是动态内存管理部分了,也就是c里的malloc和c++里的operator new. 他们的作用我就不罗嗦了.我只讲讲它们是怎么实现的.虽然没有标准规定, 但是opertor new很有可能是用malloc实现的,至少Ms 的crt是这样. 不过可以肯定,malloc不会用operator new实现. 所以,我就讲讲malloc和free的实现.原创 2007-01-01 16:23:00 · 3841 阅读 · 2 评论 -
十进制浮点数的表示方法
使用十进制浮点数,可以避免二进制浮点数与我们习惯的十进制数之间的表示误差.这个在金融领域是非常重要的.但是计算机基本都只能对二进制浮点数进行计算,也就是IEEE754格式表示的浮点数.很多程序都会自己模拟十进制浮点数的计算.为了统一,IEEE754做了扩展,包括了十进制的浮点数.IEEE 754-2008里面规定了十进制浮点数的一些规范.不过里面没有说具体的二进制表示方法.只是规定了32位,6原创 2010-02-20 23:39:00 · 15114 阅读 · 9 评论