strlen函數是不包括‘\0’的長度的,sizeof計算的結果才包括'\0'的長度:
C++ new動態數組初始化
void testnew( const char* str ) { if (!str){ m_pdata = 0; } else{
int len = strlen(str); m_pdata = new char[len + 1]; strcpy(m_pdata,str);
m_pdata[len] = '\0'; } }
動態數組初始化:
對於內置數據類型元素的數組,必須使用()來顯示指定程序執行初始化操作,否則程序不執行初始化操作:
int *pia = new int[10]; // 每個元素都沒有初始化
int *pia2 = new int[10] (); // 每個元素初始化為0
類類型元素的數組,則無論是否使用(),都會自動調用其默認構造函數來初始化:
string *psa = new string[10]; // 每個元素調用默認構造函數初始化
string *psa = new string[10](); // 每個元素調用默認構造函數初始化