设为首页 加入收藏

TOP

linux、windows中string的区别
2014-11-23 22:37:03 来源: 作者: 【 】 浏览:2
Tags:linux windows string 区别


string a("aaaa");
string b;
b = a;
const char* p1 = a.c_str();
const char* p2 = b.c_str();
if (p1 == p2)
{
printf("true");
}
else
{
printf("false");
}

以上代码在windows输出false,在linux输出true.
原因就是因为linux下用的是写时拷贝,所以当编译器在赋值并不分配内存,而且a和b公用同一份内存。当调用string中的函数改变b时,才分配内存。
注意是通过string的函数,如果用b.c_str()获得的指针强制修改b,因为这种修改绕开了写时拷贝,a和b公用的同一份内存,所以a也改变。
本文出自 “ 出发了” 博客

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇编程序输出各种星号图 下一篇printf格式输出函数详解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: