程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> linux、windows中string的區別

linux、windows中string的區別

編輯:關於C語言


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也改變。
本文出自 “     出發了” 博客

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved