天天看點

linux、windows中string的差別

以上代碼在windows輸出false,在linux輸出true.

原因就是因為linux下用的是寫時拷貝,是以當編譯器在指派并不配置設定記憶體,而且a和b公用同一份記憶體。當調用string中的函數改變b時,才配置設定記憶體。

注意是通過string的函數,如果用b.c_str()獲得的指針強制修改b,因為這種修改繞開了寫時拷貝,a和b公用的同一份記憶體,是以a也改變。

繼續閱讀