玩心未泯

卡尔斯希普拉斯

C++博客 首页 新随笔 联系 聚合 管理
  19 Posts :: 0 Stories :: 98 Comments :: 0 Trackbacks

#

     摘要: 上一篇咱们写到了USB驱动必须实现的三个入口函数:USBInstallDriver,USBUnInstallDriver和USBDeviceAttach。这一篇就主要介绍一下这几个函数  阅读全文
posted @ 2007-04-29 14:22 SuperPlayeR 阅读(3329) | 评论 (0)编辑 收藏

     摘要: 这两天时间完全泡在CE的驱动开发中,学习学习,感觉就是资料不好找,难入门难上手,象我这样仅仅只有eVc4的更是没法调试没法跟踪,困难还是挺多的。学习了两天,现在感觉有那么点意思了,记录一下与大家分享。  阅读全文
posted @ 2007-04-27 17:54 SuperPlayeR 阅读(4036) | 评论 (2)编辑 收藏

     摘要: 最近公司项目的需求发生变化,要把一个PC上的项目移植到PDA上,而该项目中有一usb外设,要开发该外设在PDA上通过USB口连接的驱动程序,咱这个wince驱动开发门外汉开始学习了,今天一天还是有不少收获,拿来共享一下。
  阅读全文
posted @ 2007-04-25 21:58 SuperPlayeR 阅读(3652) | 评论 (4)编辑 收藏

     摘要: 似乎从学会C语言开始就知道使用define了,很久很久了,但是今天却碰到一个从来没见过的define用法,也许你也没见过呢?来,容我慢慢道来。  阅读全文
posted @ 2007-04-20 16:39 SuperPlayeR 阅读(25959) | 评论 (21)编辑 收藏

     摘要: 前些天写程序的时候遇到了HeapCorruption,当时对这个问题一知半解,发表了篇随笔,今天有空以vc6编译器做做研究,写下探索的结果大家分享一下。  阅读全文
posted @ 2007-04-12 11:44 SuperPlayeR 阅读(10982) | 评论 (5)编辑 收藏

今天写程序的时候碰到一个问题,调试的时候总是报错Heap corruption detected。一直没碰到过这样的问题,所以实在不知道如何下手。后来偶然一次注释掉一个释放语句,就没报错了Heap corruption detected了(但是报memory leak),才发现原来这个释放有问题。我的一个函数调用中,开始的时候分配了一个char数组,结束的时候释放这个数组空间,看起来完全是没有问题的,居然会引发Heap corruption detected。代码大体如下:
 
char* pCmd = new char[len+1];   // len has got value before
memset( pCmd, 0, len+1);
.........
for(int i=0;i<len;i++) {
      ........      //获取一个str内容形如:"1A", "0F"
      sscanf(str, "%02X", &pCmd[i]);
}
.....
delete [] pCmd;

找到问题的所在,再分析代码才发现了这其中一个很隐蔽的问题,就是那句sscanf,由于第二个参数用的是"%02X",那么对它而言,最后一个参数就是一个指向int类型的指针了,而我给的实际是一个char的指针。
如果上面的循环只进行到i<len-2,或者pCmd的size扩大到len+3,都可以避免heap corruption。
后来我干脆用了一个零时的int型变量来完成这个工作。

要分析这个问题,太理论化的我将不上来,应该是sscanf调用的过程中,由于pCmd分配到的空间不足,因此引发了新的分配,pCmd不再是像声明的那样一个len+1大小的char数组,因此直接调用delete [] pCmd就会引发heap corruption了。到底咋回事,也许还要高人来讲讲。

posted @ 2007-04-10 17:39 SuperPlayeR 阅读(13289) | 评论 (3)编辑 收藏

     摘要: 不要过分依赖他人,遇到问题应该自己先考虑解决方法,自己先尝试。提出的问题如果根本不值得一问,你就不配顶上程序员这个称号。  阅读全文
posted @ 2007-04-02 01:47 SuperPlayeR 阅读(356) | 评论 (0)编辑 收藏

     摘要: 最近的外包,让我接触了SmartPhone应用开发,碰到最大的难题就是RasDial的调用问题,网上没找到相关说明,只好自己下个武断的结论,期待高人指点。  阅读全文
posted @ 2007-03-31 23:29 SuperPlayeR 阅读(1471) | 评论 (4)编辑 收藏

        咱也开始接私活干了,没办法,都是为了养家糊口啊~:P 
        可惜啊,这个外包接的真不划算,本来公司项目到了最紧的时候了,天天在加班,这给活的主还非要当晚就交工,说东西很简单,唉~~虽然他要的东西,咱以前都作过,但总不能就Ctrl+C再Ctrl+V了给他吧,话说回来,C&V了还保不准运行不起来呢,而且说起来我也一直是做Windows CE/Windows Moblie上的开发,但是一直都是针对PDA及PPC平台,他老人家要的是SmartPhone的,虽然没多少差距,肯定还是会有些麻烦的,后来的工作过程,果然证明了我的判断。
        昨晚上干到三更半夜,今天一早起来又忙活了一天,到现在总算是让他看到了真材实料,付了1/3的定金过来,唉~~那个赶啊~~~赶进度比我老板要求还高,不过对于我评估的进度而言,作开发这进度总赶不了的,这也算是做项目经理磨练出来的一种本领吧,倒是不是我要拖拉,而是实实在在要把风险考虑进去,未知领域尤其存在风险。唉~说的好像我很专业了,其实我也是刚起步,说不出个一二三,模模糊糊有那么点感觉,跟着感觉走呗~!:P
         累死了,休息下先~下次接活一定要接个轻松点的,报酬还要好点的~哇哈哈哈,不会是异想天开吧。
posted @ 2007-03-31 23:04 SuperPlayeR 阅读(488) | 评论 (2)编辑 收藏

仅列出标题
共2页: 1 2