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
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Mina框架断包、粘包问题解决方案
- 下一篇: 常用网站网址、名称、logo列表