分享VC6.0 STL 补丁,随便散分

耍宝王 2010-02-03 04:11:27
这是我昨天无意中发现的,内容出自freefalcon的个人专栏,其中VC6.0的STL库涉及9个头文件,我已经改好了现在放上来,覆盖就好(X:\Program Files\Microsoft Visual Studio\VC98\Include)不过还是建议备份原文件

下载地址:http://download.csdn.net/source/2042973

修正方案使用的是DINKUMWARE公司
原地址中的部分BUG已在VC6.0 sp6中得到修复,以下列出的是未修复的

顺便说一下关于istream头文件的修改,dinkumware上给出的是VC 5.0 的方案,VC 6.0已经修复了这个,但是VC 6.0修改方法和dinkumware不同,dinkumware的修改方案中的有提及原文:Note that V6.0 replaces snextc with stossc. It is an adequate fix, but you can also apply the above patch safely.请自行决定,因此我也没有把istream放上来

以下内容摘自:
freefalcon的个人专栏

Fix to deque
改动相当大,差不多是重写了整个代码。我未作分析。

Fix to fstream
该BUG主要影响效率,从代码可以看出,只有当_Closef不等于_Openf1时才可能执行后面的_Mysb::_Init,这样对于通过 open方式打开一指定文件(函数为_Myt *open(const char *_S, ios_base::openmode _M))则有不好的性能。

Fix to list
sort方法在元素数量大于等于32768时存在问题,测试代码如下:

Fix to sstream
basic_stringbuf::overflow在处理内存增长时太缓慢,严重影响性能。

Fix to string
问题与istream类似,均为getline处理终止符时有问题。我未对该问题做分析,不知道它在什么情况下出现以及有什么后果。

Fix to vector
该问题不明显,我不清楚它在什么情况下会出现。按照其代码,只有当_First或_Last受到意外改写才可能造成问题。

Fix to xmemory
该问题不易出现,属于编译器的BUG。

Fix to xstring
P.J. STL中的的string采用了copy on write和reference counting技术
实现这一方式的手段是引用计数,为此,P.J. STL采用了一个巧妙的手段,即在分配内存时多申请了一个字节的空间(位于起始处),这一字节被用作引用计数,由此可知,其计数的最大值只能是255,该值用宏_FROZEN表示。
但是P.J. STL并没有考虑引用计数在多线程环境下的同步问题,因此存在潜在的错误。解决这一问题最简单的办法是将_FROZEN的值改为0,即去掉引用计数功能。而完备的方案则需自己动手实现多线程同步。

Fix to xtree
改动较大,对map、multimap、set和multiset存在影响,未作分析
...全文
599 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
myweb123 2010-04-21
  • 打赏
  • 举报
回复
这个对我有用。
zhongxiutao123 2010-02-05
  • 打赏
  • 举报
回复
接分了
fo1_sky 2010-02-05
  • 打赏
  • 举报
回复
接分了
whg01 2010-02-05
  • 打赏
  • 举报
回复
随便接分。
zhangrenhui 2010-02-05
  • 打赏
  • 举报
回复
JFJF
帅得不敢出门 2010-02-05
  • 打赏
  • 举报
回复
vc6+icc+stlport+boost就perfect 了
天亮后说晚安 2010-02-05
  • 打赏
  • 举报
回复
jfjf
p_zzf000 2010-02-05
  • 打赏
  • 举报
回复
好用个
Yuchi1989 2010-02-04
  • 打赏
  • 举报
回复
我感觉vs2010比vs2008稳定
wangchentangjuan 2010-02-04
  • 打赏
  • 举报
回复
jf
beyond071 2010-02-04
  • 打赏
  • 举报
回复
jf
HillPR 2010-02-04
  • 打赏
  • 举报
回复
新手接分....以后好问问题~谢了!
balancenada 2010-02-04
  • 打赏
  • 举报
回复
vs2008
hlyces 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 pgplay 的回复:]
引用 1 楼 yzx714 的回复:
VC6,真古老

新三年,旧三年,缝缝补补又三年。
[/Quote]

===================
crystal_dark 2010-02-04
  • 打赏
  • 举报
回复
jf
梦之安魂曲 2010-02-04
  • 打赏
  • 举报
回复
要是用来学习STL的话,用DEV C++,CODEBLOCKS也很好用。
zhouqian88423 2010-02-04
  • 打赏
  • 举报
回复
VC6.0是有许多BUG, 经常编译时卡住不动了, 但是用习惯了就不愿意换了, 虽说VS2008更好用!
WPooh 2010-02-04
  • 打赏
  • 举报
回复
...接分...
microsong 2010-02-04
  • 打赏
  • 举报
回复
喜剧
某某9 2010-02-04
  • 打赏
  • 举报
回复
up!
加载更多回复(23)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧