`
kofsky
  • 浏览: 197405 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

遇到几个问题

阅读更多

1. 指针问题(好难描述这个问题了)

如下一段代码:

 (A)AdsPlayList playList;// 这个类中有一个 std::vector<AdsPlayItem*> 对象,存放一系列的指针

 (A)playList.load( filename ); // 构建 std::vector<AdsPlayItem*>

 (A)std::vector<AdsVideoPlayItem*> vlist = playList.getVideoPlayList();// 从中取出一部分使用

 (B) 使用 vlist 的代码,如

   for ( i = 0; i < vlist.size(); i++ )
   {  // operation
  }

如果代码A与代码B在一个代码段内,那么程序不会有任何问题。

但是,如果这段代码被拆分两份,在一地方取出数据(标A代码),在另外一个地方使用它(标B代码),那么就会出现 野指针 的问题。debug会发现,能够从文件中取出所有的数据,完整的构建 std::vector<AdsPlayItem*> ,但是构建完毕后,使用它的时候,指针指向垃圾数据,无法取出。

原因:浅拷贝,两个指针指向同一片区域,当一个指针释放后,导致另外一个指向垃圾数据。

playList.getVideoPlayList();操作时,是相当于从原始的向量中取出一部分的指针,然后插入到该向量。执行完毕后,对象playList被释放了,其内部向量所指向的数据也全部释放。这时候,刚才取出存放在vlist中的指针就车成野指针了,全部指向垃圾数据。

 

2. XmlRpc++库问题

  当一个客户离开的时候,如何让库的使用者感知其的离开?

  尚未解决。基于现有的xmlrpc的体系架构,还真不知道该怎么去解决这个问题。难办。

  越做到后面,自己重新对其进行封装的欲望越强烈。

  太多的操作都要受其限制,很难有效的扩充。

 

3. 过度设计,或者滥用模式?

   感觉自己有这方面的苗头了。最近在设计过程中,一个很小的角落,都希望能够对其进行抽象,写出优雅的代码。但结果常常不好,不仅常常被修改,而且也不觉得优雅,类的数量上升非常快。到后来不得不严格控制才得行了。

   怎么把握一个度,以及去做真正需要的抽象,我得好好考虑下了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics