在vc7.1下直接使用sgi的stl源码的问题

20040216 2006-11-13 01:57:47
编译时提示fatal error C1001
网上查了一些资料,说的vc6的bug,不知道大家是怎么用sgi的stl的
用stlport又太麻烦,vc7.1对模板的支持达99%,为什么会出这个错误呢
...全文
250 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
20040216 2006-11-13
  • 打赏
  • 举报
回复
我们用stl很简单的功能,stl其实本来就是很简单的东西,如果不是要弄内存管理部分,根本不会看书,msdn就够了
因为我们清楚要做什么,用数组模拟性能不比stl差,如果写个容器类的可靠性得不到保证,那写其他类的可靠性又怎么能保证。

还是到主题上来,等会我看看是写allocator还是写简单容器
taodm 2006-11-13
  • 打赏
  • 举报
回复
哎,STL自己绝无内存泄漏。
你自己写的代码可靠性根本很难比得上STL。很多错误,不是多测试就能测出来的。
你还是让你们项目中STL最熟的兄弟,用最短时间看完《STL源码剖析》和《EffectiveSTL》吧。
20040216 2006-11-13
  • 打赏
  • 举报
回复
心里总有这样的障碍:代码不是公司写的,出了问题一时半刻不知道在哪里

本来很简单的功能,用stl还不如自己写简单的,多测试一段时间出错的可能也很小,出错了也很快就能知道
20040216 2006-11-13
  • 打赏
  • 举报
回复
恩,目前不是很了解

stl以前只是用它的vector和map放东西和做映射,有点用过了头,由于内存这块是stl自己管理,我们做内存泄漏检测不出来,可能是方法不对,stl自己使用的内存只是分配没有真正释放过,所以打算自己接管stl的内存管理部分,这样就想到用sgi的代码,结果编译就麻烦

上周末看了看《stl源码剖析》和sgi的相关代码,今天又看了看我们使用stl的部分,觉得80%的地方可以用数组去模拟,即使是map,动态增长也不是什么问题,等会再决定是不是自己做个简单的容器算了,用数组优点是很多的
taodm 2006-11-13
  • 打赏
  • 举报
回复
STL自己所用内存绝无泄漏。
对于windows这种有保护模式的OS,每个进程都有2G内存可用的,你的对象除非峰值时有数百万个,而平时才数个,才会有严重的内存差,那么接管内存也还有些意义。
你现在的主要问题还是不了解STL,所以惧怕它有问题。
要么,招一个精通STL的人参与项目,要么还是别用STL了吧。
20040216 2006-11-13
  • 打赏
  • 举报
回复
接管内存管理后至少内存泄漏很容易查,释放的内存多了后内存可以真的释放,而sgi的stl是不会释放内存的,总是缓存起来,而且大于128个字节的内存就系统默认的new和delte,这样为了效率对大对象又要做对象池

我们的程序基本不用stl的算法,只是用容器,因为可以自动增加大小,我在和别人商量下,看是不是写几个简单的容器用用就行了
taodm 2006-11-13
  • 打赏
  • 举报
回复
stl基本就不会错。它也没有任何错误处理。
如果你这么不了解STL,你们项目还是慎用STL吧。
接管STL内存管理也只能对检查内存越界有帮助。你恐怕要白费力气了。
20040216 2006-11-13
  • 打赏
  • 举报
回复
内存都是自己管理,泄漏问题不大
空指针的问题程序运行2天就出来了
内存越界运行期就出来了

我说的不知道问题在哪里是stl基本不会报错,有错都被它处理了,这样才可怕
taodm 2006-11-13
  • 打赏
  • 举报
回复
不使用STL才更加出了问题不知道错在哪呢。
内存泄漏、空悬指针、内存越界。。。。。
20040216 2006-11-13
  • 打赏
  • 举报
回复
我先试试自已写个allocator
刚下了个stlport5.1看的麻烦
本来不准备使用stl的,就是怕程序出了问题不知道错在哪里
taodm 2006-11-13
  • 打赏
  • 举报
回复
STL的实现虽然各有差别,但是实现功能都相同的。你没有必要了解每一种实现的具体代码。
写一个符合标准的allocator即可。无论是VC7.1/sgi stl/stl port都可以使用这个allocator来接管内存管理。
20040216 2006-11-13
  • 打赏
  • 举报
回复
sgi的代码容易阅读些,资料多,这样我们掌握起来方便些
直接接管vc7.1的stl的内存管理也行,是不是写一个符合标准的allocator就行了呢?
taodm 2006-11-13
  • 打赏
  • 举报
回复
stl的内存管理,你直接接管VC7.1的stl库的内存管理即可。
虽然不用VC7.1,但是我们的系统也接管STL的内存管理的。
所以,问你的原始需求即可,不要提误导性的问题。
20040216 2006-11-13
  • 打赏
  • 举报
回复
我主要是想接管stl的内存管理部分,对我们的程序做统一的内存管理
stl_config.h中我开了一些宏,结果错误更多,也可能是我开多了,vc7.1对模板特性的支持列表没找到,只能根据使用的经验开

stlport里面的东西太多了,自己不好掌握

taodm你在vc7.1下用过sgi的stl吗?
taodm 2006-11-13
  • 打赏
  • 举报
回复
模板编译的时候有很多宏要定义的。所以,直接使用很可能有问题的。
VC7.1自己的stl库应该够用了,除非你要hash_map/hash_set。
安装stlport也很简单的。
不知道你为啥有这个想法。

64,691

社区成员

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

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