請問 C++ 的 Debug ' Release 模式對 string 的處理不同 ?

以下的示例我知道這是不正確的用法, 但我有點鑽牛角尖, 請見諒.
最佳化已關閉 /Od

string 物件配上 sprintf (), 要正確的顯示 'abc' :

Debug ' Release 模式下, 皆可以這麼寫:

  string s("abc");
  printf("%s", s.data());

但在 Release 模式下除了上述寫法, 亦可這麼寫 :
(Debug 模式下這麼寫出來的結果一定是錯的)

  string s("abc");
  printf("%s", &s);

我發現原因在於 Debug 模式下, s 多了紅框的東西 , 接著才是 'abc'
請問 C++ 的 Debug ' Release 模式對 string 的處理不同 ?
所以在 Debug 模式下我必須寫成這樣 :
  string s("abc");
  printf( "%s", (size_t *)(&s)+1 );

而 Release 模式下, s 就直接是 'abc' :
有人知道為什麼嗎 ? 謝謝
感恩
2021-07-22 23:50 發佈
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?