当你在写new T[N]的代码时,请一定要优先考虑使用STL中的vector容器orstring容器来代替你自己new的数组。可能你会问我为什么呢?
Reason:当你决定用new来动态分配内存时,这意味着你将承担如下责任:
①:你必须确保以后会有人用delete来删除所分配的内存。如果没有随后的delete,那么你的new将会导致资源泄露。
②:你必须确保使用了正确的delete形式。如果分配了单个对象,则必须使用delete;如果分配了数组,则必须使用delete[]。如果使用了不正确(不配对)的delete形式,那么结果将是不确定的。(反正这样的程序就是不好的)
③:你必须确保只delete一次。如果一次分配被多次delete(重复释放heap区内存),结果同样是不确定的(但可以肯定的是,这样的程序必然会报异常!)
所有以后coding时,You'd better program like this:
int* ptr = new int[8]; change into vector<int> vec; vec.reserve(8);
char* ptr = new char[8]; change into string str;