1. 程式人生 > > C++ new 動態陣列初始化

C++ new 動態陣列初始化

問題:紅字部分的程式碼是否有問題?

程式碼是沒有問題的,考慮的是new申請的記憶體有沒有初始化?

在這段程式碼中,有無初始化是沒有關係的,因為str字串中已含有字串結束標誌。

inline mystring::mystring( const char* str )
{
	if (!str){
		m_pdata = 0;
	} 
	else{
<span style="color:#ff0000;">		m_pdata = new char[strlen(str)+1];
		strcpy(m_pdata,str);</span>
	}
}

動態陣列初始化:


對於內建資料型別元素的陣列,必須使用()來顯示指定程式執行初始化操作,否則程式不執行初始化操作:

int *pia = new int[10]; // 每個元素都沒有初始化

int *pia2 = new int[10] ();  // 每個元素初始化為0


類型別元素的陣列,則無論是否使用(),都會自動呼叫其預設建構函式來初始化:

string *psa = new string[10];  // 每個元素呼叫預設建構函式初始化

string *psa = new string[10]();  // 每個元素呼叫預設建構函式初始化

參考:http://www.cnblogs.com/mywebname/articles/2291540.html

.