[c++ 溫故知新]類內char* 指標記憶體分配長度
阿新 • • 發佈:2019-01-23
已開始接觸開發工作時,面對類內char* 指標,有時候在對其賦值時,面對記憶體分配長度往往不知所措,如字串長度1024,
我們實際分配記憶體的時候,需要分配1024+1的記憶體,最後一位用於賦值‘’\0‘,如果不這麼做的話,就會下面這樣:
上面的程式碼輸出結果會亂碼,因為c++輸出字串時,只要沒有讀取到‘\0’就會一直進行下去,因此把char* 記憶體分配為適當的長度(len+1),並在最後賦值‘\0‘,就可以了#include <iostream> using namespace std; class test { public: test(const char*); ~test(){} char* m_pstr; }; test::test(const char* str):m_pstr(NULL) { int len=strlen(str); //m_pstr=new char[len+1]; //memset(m_pstr,0,len+1); m_pstr=new char[len]; memset(m_pstr,0,len); memcpy(m_pstr,str,len); } int main() { char* s="hello world"; test t=s; cout<<t.m_pstr<<endl; }