g++ stl 和 vc2008 stl的区别?

xia_wj 2011-06-02 04:37:32

string s = "1234";
string a = s;
printf ("%x %x\n", a.c_str(), s.c_str());


g++上面2个字符串地址是一样的, 指向同一块内存.
vc 2008上面2个字符串地址是不一样的, 指向不同的内存.

windows和linux的stl实现不同吗? 还有其他地方不同的吗?
...全文
190 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xia_wj 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 healer_kx 的回复:]

楼主写程序还考虑跨平台吗?
[/Quote]

感谢各位的帮忙了.
基本在windows上面写程序, 用vs2008, 然后到linux下编译运行.偶尔会在windows下面调试.
当然调用系统api的时候, 会写2套代码, 用#if #elif 区分一下, 没想到stl这部分也会不一样.
healer_kx 2011-06-02
  • 打赏
  • 举报
回复
楼主写程序还考虑跨平台吗?
ChengNan_ 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pengzhixi 的回复:]

标准从来就没规定要怎么实现。所以无标准可循
[/Quote]
标准不规定实现,但是实现要遵循标准,就像C++编译器一样,各有各的是实现,但是他应该要满足C++的标准。
pengzhixi 2011-06-02
  • 打赏
  • 举报
回复
标准从来就没规定要怎么实现。所以无标准可循
ChengNan_ 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xia_wj 的回复:]

如果各个平台stl的实现不一样, 就会出现很多陷阱.
会给移植带来很多问题.
[/Quote]
我觉得,实现至少遵循标准吧,如果你去依赖各个平台的实现,反而给移植带来问题。
两者的vector实现不一样,如果对vector用sort排序,VS中的要慢。
healer_kx 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xia_wj 的回复:]

再请教一下各位牛人, windows和linux的stl还有其他方面的区别吗?
有没有什么官方的文档.
[/Quote]

用起来基本是一致的。

毕竟你问的问题本来不应该是暴露出来的。
xia_wj 2011-06-02
  • 打赏
  • 举报
回复
再请教一下各位牛人, windows和linux的stl还有其他方面的区别吗?
有没有什么官方的文档.
ChengNan_ 2011-06-02
  • 打赏
  • 举报
回复
这是string的实现方式不一样,有的是引用计数实现,有的不是
xia_wj 2011-06-02
  • 打赏
  • 举报
回复
如果各个平台stl的实现不一样, 就会出现很多陷阱.
会给移植带来很多问题.
healer_kx 2011-06-02
  • 打赏
  • 举报
回复
我觉得还是VS2008的好一些。

Copy On Write是以前的实现方式了。

你google一下,我提到的词汇。
pengzhixi 2011-06-02
  • 打赏
  • 举报
回复
那说明g++使用的引用计数而vc没用呗

64,662

社区成员

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

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